Abrufen einer Registrierungsvariablen in einem Stapelskript
1431
Yaneeve
Ich möchte ein Batch-Skript (Windows XP) schreiben, das bestimmte Installationspfade aus der Registrierung extrahiert.
Wie würde man so ein Skript schreiben?
Ich habe folgendes geschrieben - ich bin (wie Sie vielleicht an meinem Beispiel sehen können) ein Programmierer, weiß aber praktisch nichts über Batch-Skripte. Kommentare zu den unten stehenden sind ebenfalls erwünscht:
@echo off set Count=0 for %%a in (%*) do set /a Count+=1 if %Count% GEQ 3 goto :error if %Count% EQU 1 goto :SET_FOUND_JAVA if %Count% EQU 2 goto :SET_FOUND_NSIS if %Count% EQU 0 goto :MUST_CALULATE :SET_FOUND_JAVA set tmp_java=%1 goto :FOUND_JAVA :SET_FOUND_NSIS set tmp_java=%1 set tmp_nsis=%2 goto :FOUND_NSIS :MUST_CALULATE For /F "tokens=*" %%I in ('REG QUERY "HKLM\SOFTWARE\JavaSoft\Java Development Kit\1.6" /v JavaHome') Do Call :PARSE_JAVA %%I GoTo :CALCULATED_JAVA :PARSE_JAVA If "%1"=="" GoTo :EOF set java_location=%1 Shift GoTo :PARSE_JAVA :FOUND_JAVA set java_location=%tmp_java% :CALCULATED_JAVA set JAVA_HOME=%java_location% For /F "tokens=4* skip=2" %%I in ('REG QUERY HKLM\SOFTWARE\NSIS /ve') Do Call :PARSE_NSIS %%I GoTo :CALCULATED_NSIS :PARSE_NSIS If "%1"=="" GoTo :EOF set nsis_location=%1 Shift GoTo :PARSE_NSIS :FOUND_NSIS set java_location=%tmp_java% set nsis_location=%tmp_nsis% :CALCULATED_NSIS set JAVA_HOME=%java_location% set NSIS_DIR=%nsis_location% Echo JAVA Home found at %JAVA_HOME% Echo NSIS Home found at %NSIS_DIR% mvn -P package -Dnsis.dir=%NSIS_DIR% clean package go end :error echo USAGE %0 echo USAGE %0 [JAVA_HOME] echo USAGE %0 [JAVA_HOME] [NSIS_HOME] :end
EDIT 1:
Wenn Sie es auf meinem Computer ausführen, erhalten Sie Folgendes:
JAVA Home found at P:\Java\jdk1.6.0_20 NSIS Home found at P:\NSIS
Beim Ausführen auf einem anderen Computer wird Folgendes erzeugt:
JAVA Home found at Files\Java\jdk1.6.0_18 NSIS Home found at
Dies ist seit dem Befehl:
REG QUERY "HKLM\SOFTWARE\JavaSoft\Java Development Kit\1.6" /v JavaHome
Produziert:
! REG.EXE VERSION 3.0 HKEY_LOCAL_MACHINE\SOFTWARE\JavaSoft\Java Development Kit\1.6 JavaHome REG_SZ C:\Program Files\Java\jdk1.6.0_18
Der obige Code funktioniert nur, wenn die Installationspfade keine Leerzeichen enthalten
Yaneeve vor 14 Jahren
0
Sie scheinen Ihre eigene Frage beantwortet zu haben. Funktioniert dein Code nicht? Was tut es? Können Sie Ihre Frage vielleicht anders stellen?
boot13 vor 14 Jahren
0
@ boot13 - bitte schauen Sie sich die hinzugefügte Bearbeitung an
Yaneeve vor 14 Jahren
0
0 Antworten auf die Frage
Verwandte Probleme
-
4
Wie finde ich heraus, wer bei Windows XP angemeldet ist?
-
3
Was ist der Deal mit dem Ordner C: \ Programme \ xerox \ nwwia?
-
3
Warum führt das Entfernen des USB-Sticks zu einem blauen Bildschirm?
-
3
Wie kann ich eine Verzeichnisstruktur "invertieren"?
-
2
Gibt es eine Möglichkeit, einen Menüeintrag "Senden an -> E-Mail-Empfänger" an Google Mail zu sen...
-
2
Warum kann das IIS-Installationsprogramm staxmem.dll nicht kopieren, obwohl es sich im angegebenen O...
-
1
DNS-Einstellungen pro Windows-Benutzer wechseln?
-
4
Gibt es eine Möglichkeit, den Scanner eines Multifunktionsdruckers gemeinsam zu nutzen?
-
8
So verhindern Sie, dass die Taskleiste bei der Verwendung von Remote-Desktop schrumpft?
-
20
Verpasse ich etwas, wenn ich unter Windows XP bleibe?