Пакет Windows: reg значение ключа запроса в переменную, но не отображает ошибку, если ключ не существует - PullRequest
3 голосов
/ 20 марта 2011

У меня есть следующая пакетная команда, которая выбирает раздел реестра и присваивает значение переменной, но она отображает ошибку, когда ключ не существует

for /f "tokens=2,*" %%a in ('reg query HKLM\Software\MySoftware\1.0\MyExecutable /v "InstallDir" ^| findstr InstallDir') do set InstallPath=%%b

Есть ли способ обойти исключение? Я пытался использовать 2> NUL после запроса reg или в конце команды, но я получаю исключение 2> в это время было неожиданным.

помощь / руководство высоко ценится

Ответы [ 2 ]

5 голосов
/ 20 марта 2011

Вы должны решить проблему, как с трубой.^|
Просто переключите его на 2^>NUL

Таким образом, вы получите

for /f "tokens=2,*" %%a in ('reg query HKLM\Software\MySoftware\1.0\MyExecutable /v "InstallDir" 2^>NUL ^| findstr InstallDir') do set InstallPath=%%b

Это необходимо, потому что командная часть цикла FOR будет проанализирована два раза.Сначала в контексте вашего командного файла (там 2> NUL неожиданно), а во второй раз в новом контексте cmd.exe (там 2> NUL перенаправляет stderr вашей команды reg)

0 голосов
/ 20 марта 2011

Куда после reg запроса вы его ставили?Это должно сработать (посмотрите прямо перед findstr):

for /f "tokens=2,*" %%a in ('reg query HKLM\Software\MySoftware\1.0\MyExecutable /v "InstallDir" 2>NUL ^| findstr InstallDir') do set InstallPath=%%b
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...