Получение переменной реестра в пакетном скрипте

1050
Yaneeve

Я хочу написать пакетный скрипт (Windows XP), который извлекает определенные пути установки из реестра.

Как можно написать такой сценарий?

Я написал следующее - я (как вы можете видеть из моего примера ниже) программист, но практически ничего не знаю о пакетных сценариях. Комментарии к ниже также приветствуются:

@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 

РЕДАКТИРОВАТЬ 1:

Запуск его на моем компьютере производит следующее:

JAVA Home found at P:\Java\jdk1.6.0_20 NSIS Home found at P:\NSIS 

В то время как запуск его на другом компьютере производит:

JAVA Home found at Files\Java\jdk1.6.0_18 NSIS Home found at 

Это так как команда:

REG QUERY "HKLM\SOFTWARE\JavaSoft\Java Development Kit\1.6" /v JavaHome 

Производит:

! 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
Приведенный выше код работает, только если в путях установки нет пробелов Yaneeve 14 лет назад 0
Вы, кажется, ответили на свой вопрос. Ваш код не работает? Что оно делает? Можете ли вы задать свой вопрос по-другому? boot13 14 лет назад 0
@ boot13 - пожалуйста, посмотрите на добавленные изменения Yaneeve 14 лет назад 0

0 ответов на вопрос

Похожие вопросы