Top-Themen

AppleEntwicklungHardwareInternetLinuxMicrosoftMultimediaNetzwerkeOff TopicSicherheitSonstige SystemeVirtualisierungWeiterbildungZusammenarbeit

Aktuelle Themen

Administrator.de FeedbackApache ServerAppleAssemblerAudioAusbildungAuslandBackupBasicBatch & ShellBenchmarksBibliotheken & ToolkitsBlogsCloud-DiensteClusterCMSCPU, RAM, MainboardsCSSC und C++DatenbankenDatenschutzDebianDigitiales FernsehenDNSDrucker und ScannerDSL, VDSLE-BooksE-BusinessE-MailEntwicklungErkennung und -AbwehrExchange ServerFestplatten, SSD, RaidFirewallFlatratesGoogle AndroidGrafikGrafikkarten & MonitoreGroupwareHardwareHosting & HousingHTMLHumor (lol)Hyper-VIconsIDE & EditorenInformationsdiensteInstallationInstant MessagingInternetInternet DomäneniOSISDN & AnaloganschlüsseiTunesJavaJavaScriptKiXtartKVMLAN, WAN, WirelessLinuxLinux DesktopLinux NetzwerkLinux ToolsLinux UserverwaltungLizenzierungMac OS XMicrosoftMicrosoft OfficeMikroTik RouterOSMonitoringMultimediaMultimedia & ZubehörNetzwerkeNetzwerkgrundlagenNetzwerkmanagementNetzwerkprotokolleNotebook & ZubehörNovell NetwareOff TopicOpenOffice, LibreOfficeOutlook & MailPapierkorbPascal und DelphiPeripheriegerätePerlPHPPythonRechtliche FragenRedHat, CentOS, FedoraRouter & RoutingSambaSAN, NAS, DASSchriftartenSchulung & TrainingSEOServerServer-HardwareSicherheitSicherheits-ToolsSicherheitsgrundlagenSolarisSonstige SystemeSoziale NetzwerkeSpeicherkartenStudentenjobs & PraktikumSuche ProjektpartnerSuseSwitche und HubsTipps & TricksTK-Netze & GeräteUbuntuUMTS, EDGE & GPRSUtilitiesVB for ApplicationsVerschlüsselung & ZertifikateVideo & StreamingViren und TrojanerVirtualisierungVisual StudioVmwareVoice over IPWebbrowserWebentwicklungWeiterbildungWindows 7Windows 8Windows 10Windows InstallationWindows MobileWindows NetzwerkWindows ServerWindows SystemdateienWindows ToolsWindows UpdateWindows UserverwaltungWindows VistaWindows XPXenserverXMLZusammenarbeit
GELÖST

Java Auto Updater Batch Script in Windows zeigt über Aufgabenplanung komisches Verhalten

Frage Entwicklung Batch & Shell

Mitglied: onkeldave

onkeldave (Level 1) - Jetzt verbinden

13.06.2014 um 15:11 Uhr, 1391 Aufrufe, 10 Kommentare

Hallo Experts,

ich habe mal in Zusammenarbeit mit Administrator.de ein JavaAutoUpdater Batch Script in Windows erstellt, was bei manueller Ausführung auch perfekt funktioniert.
ABER SOBALD es über die Aufgabenplanung realisiert wird und mit höchsten Rechten als Domain Administrator ausgeführt wird, immer wieder in die 32Bit Installationsfunktion springt, wobei nix zu aktualisieren ist.

Der Ablauf ist recht simple. Das sCript prüft die Architecture des BS und springt in die richtige Funktion. Danach läd es sich mit dem Tool Wget die aktuelle Versionsnummer runter und speichert sie in einer Datei. Dann werden die Versionnummern untereinander verglichen und sobald eine Version 32/64Bit sich zur aktuellsten unterscheiden, soll die jeweilige geupdated werden.
Wie gesagt manuell kein Problem, autom. Aufgabenplanung installiert er immer die 32Bit Java Version egal ob gleich oder andere Revisionsnummer.

Das SCript darf gerne weiter verwendet werden von euch, es fehlt aber noch da Download Script, was ich weggelassen habe, weil es zur Fehleranalyse eigentlich keine Rolle spielt.

Wäre Toll wenn jemand mir erklären könnte wodurch das merkwürdige Verhalten kommt?!?
Danke schonmal für eure Mühe und schönes sonniges WE!!!


Das Script:
01.
@echo off 
02.
rem #########Prozessor herausfinden und in Funktion springen######### 
03.
GOTO %PROCESSOR_ARCHITECTURE% 
04.
 
05.
 
06.
:x86   
07.
FOR /F "tokens=2* delims=	 " %%A IN ('REG QUERY "HKEY_LOCAL_MACHINE\SOFTWARE\JavaSoft\Java Runtime Environment" /v Java7FamilyVersion') DO SET Version32=%%B  
08.
GOTO TEST32 
09.
 
10.
:x64  
11.
FOR /F "tokens=2* delims=	 " %%A IN ('REG QUERY "HKEY_LOCAL_MACHINE\SOFTWARE\JavaSoft\Java Runtime Environment" /v Java7FamilyVersion') DO SET Version64=%%B  
12.
FOR /F "tokens=2* delims=	 " %%C IN ('REG QUERY "HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\JavaSoft\Java Runtime Environment" /v Java7FamilyVersion') DO SET Version32=%%D 
13.
GOTO TEST64 
14.
 
15.
:AMD64 
16.
FOR /F "tokens=2* delims=	 " %%A IN ('REG QUERY "HKEY_LOCAL_MACHINE\SOFTWARE\JavaSoft\Java Runtime Environment" /v Java7FamilyVersion') DO SET Version64=%%B  
17.
FOR /F "tokens=2* delims=	 " %%C IN ('REG QUERY "HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\JavaSoft\Java Runtime Environment" /v Java7FamilyVersion') DO SET Version32=%%D 
18.
GOTO TEST64 
19.
 
20.
 
21.
rem #########Test der 32 Bit Version auf Aktualität######### 
22.
:TEST32 
23.
"c:\Program Files (x86)\GnuWin32\bin\wget.exe" -N http://java.com/applet/JreCurrentVersion2.txt  
24.
 
25.
for /f %%i in (JreCurrentVersion2.txt) do ( set VERSION2=%%i 
26.
27.
ECHO %Version32% 
28.
ECHO %VERSION2% 
29.
 
30.
 
31.
if %Version32% NEQ %VERSION2% (goto install32) else (goto end)  
32.
 
33.
 
34.
rem #########Test der 64 Bit Version auf Aktualität######### 
35.
:TEST64 
36.
"c:\Program Files (x86)\GnuWin32\bin\wget.exe" -N http://java.com/applet/JreCurrentVersion2.txt  
37.
 
38.
for /f %%i in (JreCurrentVersion2.txt) do ( set VERSION2=%%i 
39.
40.
 
41.
ECHO %Version32% 
42.
ECHO %Version64% 
43.
ECHO %VERSION2% 
44.
 
45.
 
46.
if %Version32% NEQ %VERSION2% (goto install32) else (goto check64) 
47.
 
48.
:check64 
49.
if %Version64% NEQ %VERSION2% (goto install64) else (goto end) 
50.
 
51.
 
52.
rem #########Installieren der 32 Bit Version######### 
53.
:install32 
54.
taskkill /F /im msiexec.exe 
55.
taskkill /F /im iexplore.exe 
56.
taskkill /F /im jusched.exe 
57.
powershell.exe C:\scripts\test.ps1 
58.
C:\Scripts\java32bit.exe /s IEXPLORER=1 REBOOT=Suppress AUTOUPDATECHECK=0 JAVAUPDATE=0 WEB_JAVA=1 /L C:\java_32_setup.log 
59.
taskkill /F /im msiexec.exe 
60.
C:\Scripts\mail_java_32.bat 
61.
if %Version64% NEQ %VERSION2% ( goto install64 ) else (goto end) 
62.
exit 0 
63.
 
64.
rem #########Installieren der 64 Bit Version######### 
65.
:install64 
66.
taskkill /F /im msiexec.exe 
67.
taskkill /F /im iexplore.exe 
68.
taskkill /F /im jusched.exe 
69.
powershell.exe C:\scripts\test.ps1 
70.
C:\Scripts\java64bit.exe /s IEXPLORER=1 REBOOT=Suppress AUTOUPDATECHECK=0 JAVAUPDATE=0 WEB_JAVA=1 /L C:\java_64_setup.log 
71.
taskkill /F /im msiexec.exe 
72.
C:\Scripts\mail_java_64.bat 
73.
exit 0 
74.
 
75.
:end 
76.
exit 0
Mitglied: onkeldave
13.06.2014 um 15:14 Uhr
Wir nutzen hier im Hause Windows 2008 R2 Standard SP1
Bitte warten ..
Mitglied: Gersen
13.06.2014, aktualisiert um 16:13 Uhr
Hallo,

nach meiner Meinung liefert die Zeile
01.
GOTO %PROCESSOR_ARCHITECTURE%
keinen oder einen falschen Wert für die Variable "PROCESSOR_ARCHITECTURE". (In beiden Fällen fährt das Skript mit der x86-Variante fort.)

Grund für einen falschen Wert könnte sein, dass das Skript im Taskplaner mit einer 32-bit-CMD aufgerufen wird.

Zitat: "Die Batch Systemvariable %processor_architecture% gibt die Architektur des aktuell ausführenden Programms wieder.

Wenn nun also auf einem 64bit System diese Variable in der CMD (ganz normal gestartet) abgefragt wird, so lautet der Wert “AMD64“. Starte ich jetzt aber auf einem 64bit System die 32bit CMD (C:WindowsSysWOW64cmd.exe) so wird “x86” zurückgegeben."

s.a. http://blogs.msdn.com/b/david.wang/archive/2006/03/26/howto-detect-proc ...

Lass doch das Skript im TP die Variable mal in eine Datei schreiben... Und am Rande: Ein "EXIT" oder "GOTO end" in Zeile 4 wäre n.m.M. gut.

Gruß,
Gersen
Bitte warten ..
Mitglied: onkeldave
16.06.2014 um 09:53 Uhr
Moin Gersen,

danke für deine neuen Ideen, hab die Prozessor Variable mal über die Aufgabenplanung in eine Datei reinschreiben lassen und er gibt mir wirklich AMD64 aus, also scheint das schon mal zu klappen.

Aber selbst wenn er es falsch machen würde mit der Architektur, würde das auch nicht nicht erklären warum er bei drei gleichen Versionsnummern, die Install Funktion nicht einfach überspringt, so wie er es eigentlich tun sollte!

das Echo liefert doch folgendes zurück:

1.7.0_60
1.7.0_60
1.7.0_60

das heißt 32 und 64 sind identisch mit der neuen Java Version.

und die Schleife danach sagt doch eindeutig, springe nur in die Install Funktion wenn es NICHT gleich ist.

*confused*
Bitte warten ..
Mitglied: Gersen
16.06.2014 um 15:25 Uhr
Hallo,

noch eine Sache, die mir im Skript auffällt:

Auch in der 32-bit-Architektur arbeitet das Skript einen Befehl ab:
01.
"c:\Program Files (x86)\GnuWin32\bin\wget.exe" ...
, dessen Pfad es in einem 32-bit-Windows eigentlich (standardmäßig) nicht gibt. Oder?

Gruß,
Gersen
Bitte warten ..
Mitglied: onkeldave
18.06.2014 um 09:41 Uhr
Guten Morgen,

das Program ist kein Windows Standard - richtig!
Wget ist ein freies Kommandozeilenprogramm des GNU-Projekts zum Herunterladen von Dateien aus dem Internet
Bitte warten ..
Mitglied: onkeldave
18.06.2014 um 09:51 Uhr
ich denke aber das es keine Rolle spielt. Es wird ja über die Aufgabenplanung über den Domain Administrator ausgeführt mit höchsten Rechten oder möchtest du auf was anderes hinaus ?
Bitte warten ..
Mitglied: Gersen
18.06.2014 um 10:03 Uhr
Wenn ich das Programm in einer 32-bit-Windows-Umgebung installieren will, bietet es mir standardmäßig den Installationsordner "C:\Programme\..." an. Also wenn Du in den 32-Bit-Windows-Umgebungen den Pfad nicht angepasst hast (auf "C:\Program Files (x86)\..."), habe ich die Vermutung, dass in diesen Umgebungen das Skript die wget.exe gar nicht findet, nix herunterlädt - und dass dann natürlich die Vergleiche nicht stimmen... Kann das sein?

Gruß,
Gersen
Bitte warten ..
Mitglied: onkeldave
18.06.2014 um 11:26 Uhr
Danke Gersen,

das ist es!

01.
@echo off 
02.
"c:\Program Files (x86)\GnuWin32\bin\wget.exe" -N http://java.com/applet/JreCurrentVersion2.txt  
03.
exit 0
Bei Handausführung - läd er die Datei, bei Aufgabenplanung nicht.
Das bedeutet die Aufgabenplanung bekommt kein Zugriff aufs x86 Verzeichnis ?
Bitte warten ..
Mitglied: onkeldave
18.06.2014 um 11:32 Uhr
wir gehen von einer x64 -> amd64 umgebung aus
Bitte warten ..
Mitglied: onkeldave
18.06.2014 um 12:04 Uhr
Ja Perfekt danke für diene Mühe!

Installiert in x64 Programm Verzeichniss und es läuft nun!

Danke vielmals CLOSED
Bitte warten ..
Neuester Wissensbeitrag
Internet

Unbemerkt - Telekom Netzumschaltung!

(1)

Erfahrungsbericht von ashnod zum Thema Internet ...

Ähnliche Inhalte
Batch & Shell
Batch Script Editor - Programmvorstellung des Entwicklers (16)

Tipp von wowItsDoge zum Thema Batch & Shell ...

Batch & Shell
Batch Datei wird per Aufgabenplanung nicht ausgeführt (7)

Frage von Corraggiouno zum Thema Batch & Shell ...

Windows Server
Batch Script bei Start ausführen (3)

Frage von KEFHVDI zum Thema Windows Server ...

Batch & Shell
Batch-Script für Lizenzen (3)

Frage von stoepsu77 zum Thema Batch & Shell ...

Heiß diskutierte Inhalte
Switche und Hubs
Trunk für 2xCisco Switch. Wo liegt der Fehler? (15)

Frage von JayyyH zum Thema Switche und Hubs ...

DSL, VDSL
DSL-Signal bewerten (13)

Frage von SarekHL zum Thema DSL, VDSL ...

Backup
Clients als Server missbrauchen? (10)

Frage von 1410640014 zum Thema Backup ...