1

Если я запускаю следующее:

@ECHO OFF
FOR /F "tokens=2* delims=    " %%A IN ('REG QUERY "HKLM\SOFTWARE\SomeApp\Server" /v ServerName') DO SET ServerName=%%B
ECHO Server:  %ServerName%

а реестр не существует, выдает следующую ошибку

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

Я знаю, что ошибка ожидается, но как можно устранить эту ошибку?

Не слишком обеспокоен тем, что часть ECHO показывает просто «SERVER:» без значения, это нормально для меня.

2 ответа2

4
FOR /F "tokens=2*" %%A IN ('
    REG QUERY "HKLM\SOFTWARE\SomeApp\Server" /v ServerName 2^> nul 
') DO SET "ServerName=%%B"

ECHO Server:  %ServerName%

Изменения из вашего кода:

  • (не нужны) delims удалены. Вкладки и пробелы являются разделителями по умолчанию, их не нужно включать
  • (необходимо) Поток stderr(поток номер 2) перенаправляется на устройство nul, чтобы скрыть вывод ошибки. Оператор перенаправления > должен быть экранирован при включении в команду for /f , отсюда ^>
  • (рекомендуется) Команда set указана в кавычках, чтобы избежать проблем с конечными пробелами или специальными символами в значениях. Кавычки только защищают операцию и не включаются в значение, хранящееся в переменной.
1

Это сообщение приходит, потому что команда REG записывает либо в стандартный поток вывода, либо в стандартный поток ошибок. Если вы действительно не заботитесь о сообщениях, вы можете перенаправить вывод, чтобы он не отображался.

Измените вашу команду на:

REG QUERY "HKLM\SOFTWARE\SomeApp\Server" /v ServerName > nul 2> nul

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .