Top-Themen

AppleEntwicklungHardwareInternetLinuxMicrosoftMultimediaNetzwerkeOff TopicSicherheitSonstige SystemeVirtualisierungWeiterbildungZusammenarbeit

Aktuelle Themen (A bis Z)

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

BATCH Aktuellste installierte JAVA-Runtime auslesen und als Variable abspeichern

Frage Entwicklung Batch & Shell

Mitglied: yakazaa

yakazaa (Level 1) - Jetzt verbinden

12.07.2011 um 14:11 Uhr, 9909 Aufrufe, 14 Kommentare

Hallo zusammen,

ich habe mal wieder mit BATCH Dateien zu tun.
Aufgabe ist ganz einfach: Aktuellste installierte JAVA-Runtime auslesen und als Variable abspeichern.
das blöde daran: Keine Ahnung wie das gehen soll...

Grundsätzlich habe ich mir schon ein paar Gedanken gemacht:

Unter der Variable %CLASSPATH% gibt es einen grundsätzlich brauchbaren Pfad, z.B.:
01.
echo %CLASSPATH%
und das ergibt dann:
01.
.;C:\Program Files\Java\jre6\lib\ext\QTJava.zip
Die Ausgabe ist ja schonmal nicht schlecht. müsste jetzt ersteinmal in eine neue Variable.
Mein Vorschlag:
01.
SET JAVA_VAR =%CLASSPATH%
ergibt:
01.
ECHO %CLASSPATH% 
02.
.;C:\Program Files\Java\jre6\lib\ext\QTJava.zip
So weit so schlecht...

Jetzt brauche ich aber nur den Bereich "C:\Program Files\Java\jre6\", wie kann ich das "rausschreiben" ?

Freue mich auf eure Ideen,

Gruß Dominik
Mitglied: DerWoWusste
12.07.2011 um 14:35 Uhr
Hi.

Wie wär's mit
01.
if %PROCESSOR_ARCHITECTURE%==AMD64 goto 64 
02.
FOR /F "tokens=2* delims=	 " %%A IN ('REG QUERY "HKEY_LOCAL_MACHINE\SOFTWARE\JavaSoft\Java Runtime Environment" /v Java6FamilyVersion') DO SET Version=%%B 
03.
ECHO Version=%Version% 
04.
goto end 
05.
:64 
06.
FOR /F "tokens=2* delims=	 " %%A IN ('REG QUERY "HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\JavaSoft\Java Runtime Environment" /v Java6FamilyVersion') DO SET Version=%%B 
07.
ECHO Version=%Version% 
08.
:end
Ausgabe:
Version=1.6.0_25
Bitte warten ..
Mitglied: yakazaa
12.07.2011 um 14:56 Uhr
1A, vielen Dank !

Habe es noch etwas abgeändert, da er bei einem x86 OS anschließend auch immer den x64 Hive durchsucht hat.

01.
REM ----------------------------------------------------------------------------------------------------- 
02.
REM Ermittlung Java Version 
03.
REM Abfrage ob 64-Bit Betriebssystem 
04.
IF EXIST "C:\Program Files (x86)\Common Files\" GOTO x64  
05.
REM Abfolge bei 32-Bit Betriebssystem 
06.
FOR /F "tokens=2* delims=	 " %%A IN ('REG QUERY "HKEY_LOCAL_MACHINE\SOFTWARE\JavaSoft\Java Runtime Environment" /v Java6FamilyVersion') DO SET Version=%%B  
07.
GOTO TEST 
08.
REM Abfolge bei 64-Bit Betriebssystem 
09.
:x64  
10.
FOR /F "tokens=2* delims=	 " %%A IN ('REG QUERY "HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\JavaSoft\Java Runtime Environment" /v Java6FamilyVersion') DO SET Version=%%B  
11.
 
12.
:TEST 
13.
REM ----------------------------------------------------------------------------------------------------- 
14.
REM Nur für Testzwecke: 
15.
ECHO Java Version: %Version% 
16.
pause
Bitte warten ..
Mitglied: Skyemugen
12.07.2011 um 15:01 Uhr
Aloha,

edit zu warm heute, steht ja schon oben ... nevermind *sigh*

greetz André
Bitte warten ..
Mitglied: yakazaa
12.07.2011 um 15:05 Uhr
Danke dir, aber jetzt isses fertig
Bitte warten ..
Mitglied: yakazaa
12.07.2011 um 15:10 Uhr
Ok, ist doch sauberer habe ich mir soeben sagen lassen:

Es gibt Programminstallationen die auch für ein x86 OS einen "Program Files x86" - Ordner anlegen...
Also sowas...

01.
REM ----------------------------------------------------------------------------------------------------- 
02.
REM Ermittlung Java Version 
03.
REM Abfrage ob 64-Bit Betriebssystem 
04.
GOTO %PROCESSOR_ARCHITECTURE% 
05.
 
06.
:x86  
07.
REM Abfolge bei 32-Bit Betriebssystem 
08.
FOR /F "tokens=2* delims=	 " %%A IN ('REG QUERY "HKEY_LOCAL_MACHINE\SOFTWARE\JavaSoft\Java Runtime Environment" /v Java6FamilyVersion') DO SET Version=%%B  
09.
GOTO TEST 
10.
REM Abfolge bei 64-Bit Betriebssystem 
11.
:x64  
12.
FOR /F "tokens=2* delims=	 " %%A IN ('REG QUERY "HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\JavaSoft\Java Runtime Environment" /v Java6FamilyVersion') DO SET Version=%%B  
13.
 
14.
:TEST 
15.
REM ----------------------------------------------------------------------------------------------------- 
16.
REM Nur für Testzwecke: 
17.
ECHO Java Version: %Version% 
18.
pause
Bitte warten ..
Mitglied: Friemler
12.07.2011 um 15:21 Uhr
Hallo yakazaa,

ich hätte da noch was: Was ist wenn die Java-Version von 1.6 nach 1.7 oder so wechselt?

Hier meine Lösung dazu. Es wird in allen Unterschlüsseln des schon bekannten Registryschlüssels nach einem Wert namens FullVersion gesucht.
Die Unterscheidung zwischen x86 und x64 mache ich immer über die Abfrage, ob die Variable ProgramFiles(x86) existiert.
01.
@echo off & setlocal 
02.
 
03.
if not defined ProgramFiles(x86) ( 
04.
  set "RegKey=HKEY_LOCAL_MACHINE\SOFTWARE\JavaSoft\Java Runtime Environment" 
05.
) else ( 
06.
  set "RegKey=HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\JavaSoft\Java Runtime Environment" 
07.
08.
 
09.
for /f "tokens=3" %%a in ('reg query "%RegKey%" /s ^| findstr /i /r /c:"^ * FullVersion"') do ( 
10.
  set "JRE-Version=%%a" 
11.
12.
 
13.
echo %JRE-Version%
Ausgabe:
1.6.0_26-b03
Genauer geht's nicht .


Gruß
Friemler
Bitte warten ..
Mitglied: yakazaa
12.07.2011 um 15:23 Uhr
Guter Punkt Friemler, vielen Dank !
Starte dann mal das nächste Roll-Out....
Oder hat jemand noch etwas ?
Bitte warten ..
Mitglied: yakazaa
12.07.2011 um 15:29 Uhr
Achso:

Schlussendlich wird diese %Version% Variable in einen Pfad eingebaut, der eine .jar Datei aufruft:


SET JRE="C:\Program Files\Java\jre%Version%\bin"

Mit "Friemlers" Version ist die Ausgabe aber

1.6.0_26-b03

Der Pfad müsste aber

SET JRE="C:\Program Files\Java\jre1.6.0_26\bin" sein.

Derzeit (mit der alten Version):
SET JRE="C:\Program Files\Java\jre%Version%\bin"
klappt es allerdings...
Krieg ich bitte noch ein Update ?
Bitte warten ..
Mitglied: Friemler
12.07.2011 um 15:34 Uhr
Tjaaa, dann holen wir uns doch gleich das InstallDir:
01.
@echo off & setlocal 
02.
 
03.
if not defined ProgramFiles(x86) ( 
04.
  set "RegKey=HKEY_LOCAL_MACHINE\SOFTWARE\JavaSoft\Java Runtime Environment" 
05.
) else ( 
06.
  set "RegKey=HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\JavaSoft\Java Runtime Environment" 
07.
08.
 
09.
for /f "tokens=2*" %%a in ('reg query "%RegKey%" /s ^| findstr /i /r /c:"^ * InstallDir"') do ( 
10.
  set "JRE-InstallDir=%%bbin" 
11.
12.
 
13.
echo %JRE-InstallDir%
Gruß
Friemler
Bitte warten ..
Mitglied: yakazaa
12.07.2011 um 15:44 Uhr
Ok, und damit nutzt er (wenn mehrere gleichzeitig installiert wären) immer die Aktuellste, richtig ?
Bitte warten ..
Mitglied: Friemler
12.07.2011 um 16:36 Uhr
Zitat von yakazaa:
wenn mehrere gleichzeitig installiert wären

geht das überhaupt? Ich denke nicht.
Bitte warten ..
Mitglied: Skyemugen
12.07.2011 um 16:52 Uhr
Aloha Friemler,

doch ist möglich (zumindest auf XP-Kisten)

greetz André
Bitte warten ..
Mitglied: Friemler
12.07.2011 um 17:01 Uhr
Zitat von Friemler:
> Zitat von yakazaa:
> ----
> wenn mehrere gleichzeitig installiert wären

geht das überhaupt? Ich denke nicht.

Zitat von Skyemugen:
doch ist möglich (zumindest auf XP-Kisten)

Dann hat JRE-InstallDir den Wert des Schlüsselwertes INSTALLDIR von der als letztes in der Registry auftauchenden Java-Version. Ob die jetzt immer nach Versionsnummern geordnet dort eingetragen sind weiß ich nicht.

Gruß
Friemler
Bitte warten ..
Mitglied: yakazaa
12.07.2011 um 17:45 Uhr
Ach das wird schon passen, sonst müssen DIE beiden Anwender, die mehr Java Versionen installiert haben das halt händisch eintragen... Vielen Dank nochmal für eure Hilfe !!!
Bitte warten ..
Ähnliche Inhalte
Batch & Shell
gelöst Batch: Aktuelle Codepage in Variable speichern (3)

Frage von tomaschku zum Thema Batch & Shell ...

Windows Systemdateien
gelöst Aktuelle Java GUID Liste erhalten (10)

Frage von WinLiCLI zum Thema Windows Systemdateien ...

Batch & Shell
gelöst In einer Batch-Datei einen variablen Teil eines Dateinamens auslesen (5)

Frage von dh0815 zum Thema Batch & Shell ...

Neue Wissensbeiträge
Multimedia

Raspberry Pi als Digital-Signage-Computer

(1)

Information von BassFishFox zum Thema Multimedia ...

Windows Update

Novemberpatches und Nadeldrucker bereiten Kopfschmerzen

(15)

Tipp von MettGurke zum Thema Windows Update ...

Windows 10

Abhilfe für Abstürze von CDPUsersvc auf Win10 1607 und 2016 1607

(7)

Tipp von DerWoWusste zum Thema Windows 10 ...

Heiß diskutierte Inhalte
Router & Routing
Freigabe aus anderem Netz nicht erreichbar (21)

Frage von McLion zum Thema Router & Routing ...

Windows Server
Kennwort vergessen bei Hyper vserver 2012r (20)

Frage von jensgebken zum Thema Windows Server ...

Batch & Shell
Batch Programm verhalten bei shoutdown -p (19)

Frage von Michael-ITler zum Thema Batch & Shell ...

Festplatten, SSD, Raid
Raidcontroller funktioniert nur, wenn unter Legacy-Boot gestartet wird (13)

Frage von DerWoWusste zum Thema Festplatten, SSD, Raid ...