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 
1
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