Пакетная команда FOR tokens не может скрыть ошибку "ERROR: Системе не удалось найти ..." - PullRequest
0 голосов
/ 16 марта 2020

Я делаю простой скрипт для проверки версии реестра MS Office, считывающей значение ключа реестра. Будет сценарий ios, где ключ не существует (не установлен офис) Я много раз использовал reg.exe запрос KEY / Check 2> nul, но не могу заставить это работать внутри строки FOR. Это строка:

FOR /f "tokens=3" %%a in ('%SystemRoot%\System32\reg.exe query "HKEY_CLASSES_ROOT\Word.Application\CurVer" ^| %SystemRoot%\System32\findstr /C:"(Default)"') do set _Off_ver=%%a

Я пытался:

FOR /f "tokens=3" %%a in ('%SystemRoot%\System32\reg.exe query "HKEY_CLASSES_ROOT\Word.Application\CurVer" 2>nul ^| %SystemRoot%\System32\findstr /C:"(Default)"') do set _Off_ver=%%a

или

FOR /f "tokens=3" %%a in ('%SystemRoot%\System32\reg.exe query "HKEY_CLASSES_ROOT\Word.Application\CurVer" ^| %SystemRoot%\System32\findstr /C:"(Default)"'2>nul ) do set _Off_ver=%%a

и во многих других местах, но в итоге я получаю сообщение об ошибке:

> was unexpected at this time.

Кто-нибудь знает, как я могу скрыть ошибку:

ERROR: The system was unable to find the specified registry key or value.

Внутри этой строки FOR?

СПАСИБО

1 Ответ

0 голосов
/ 16 марта 2020

В то же время, когда Джеб ответил, я нашел сообщение (на самом деле не связанное с этим), в котором использовалось 2 ^> nul. Я не уверен, почему ^, но это сработало.

Последняя строка:

FOR /f "tokens=3" %%a in ('%SystemRoot%\System32\reg.exe query "HKEY_CLASSES_ROOT\Word.Application\CurVer" 2^> nul ^| %SystemRoot%\System32\findstr /C:"(Default)"') do set _Off_ver=%%a

СПАСИБО!

...