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

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, 9089 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 ..
Neuester Wissensbeitrag
Humor (lol)

Linkliste für Adventskalender

(3)

Information von nikoatit zum Thema Humor (lol) ...

Ähnliche Inhalte
Batch & Shell
(BATCH) Präfix aus einem USERNAME auslesen (1)

Frage von TomMaverick zum Thema Batch & Shell ...

Batch & Shell
gelöst Batch: Dateiname abhängig vom Änderungsdatum auslesen (6)

Frage von freaktastisch zum Thema Batch & Shell ...

Batch & Shell
gelöst BATCH Element aus XML-File auslesen (9)

Frage von pappkamerad zum Thema Batch & Shell ...

Heiß diskutierte Inhalte
Windows Server
DHCP Server switchen (25)

Frage von M.Marz zum Thema Windows Server ...

SAN, NAS, DAS
gelöst HP-Proliant Microserver Betriebssystem (14)

Frage von Yannosch zum Thema SAN, NAS, DAS ...

Grafikkarten & Monitore
Win 10 Grafikkarte Crash von Software? (13)

Frage von Marabunta zum Thema Grafikkarten & Monitore ...

Windows 7
Verteillösung für IT-Raum benötigt (12)

Frage von TheM-Man zum Thema Windows 7 ...