Получение переменной реестра в пакетном скрипте
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
Приведенный выше код работает, только если в путях установки нет пробелов
Yaneeve 14 лет назад
0
Вы, кажется, ответили на свой вопрос. Ваш код не работает? Что оно делает? Можете ли вы задать свой вопрос по-другому?
boot13 14 лет назад
0
@ boot13 - пожалуйста, посмотрите на добавленные изменения
Yaneeve 14 лет назад
0
0 ответов на вопрос
Похожие вопросы
-
4
Как узнать, кто вошел в Windows XP?
-
3
Как обстоят дела с папкой C: \ Program Files \ xerox \ nwwia?
-
3
Почему отключение моего флэш-накопителя приводит к синему экрану?
-
-
3
Как я могу "инвертировать" структуру каталогов?
-
2
Есть ли какой-нибудь способ получить пункт меню «отправить в -> получатель почты» в Gmail?
-
2
Почему установщик IIS не может скопировать staxmem.dll, несмотря на то, что он находится в указанной...
-
1
Переключить настройки DNS для каждого пользователя Windows?
-
4
Есть ли способ поделиться сканером многофункционального принтера?
-
8
Как предотвратить сжатие панели задач при использовании удаленного рабочего стола?
-
20
Я что-то упускаю, придерживаясь Windows XP?