Проверка наличия значения раздела реестра в циклическом пакете

Я пишу пакетный скрипт, чтобы проверить, существует ли ключ реестра и у меня возникли некоторые вопросы.
Когда я непосредственно указать ключ для поиска,%ERRORLEVEL% корректно. В приведенном ниже примере значение 1 соответствует ожидаемому.

REG QUERY HKLM /v NONEXISTENT_KEY
ECHO %ERRORLEVEL%

однако я проверяю существование связки ключей в файле, поэтому я зацикливаюсь на нем с FOR. Следующие Эхо 0 по какой-то причине, что я не понимаю.

FOR /F "tokens=1-2 delims=," %%A IN (myFile.txt) DO (
    REG QUERY "%%A" /v "%%B"
    ECHO %ERRORLEVEL%

Примечание: структура файла я выполнение цикла показано в следующем примере:

HKEY_LOCAL_MACHINEPATHTOKEY,SOME VALUE
22
задан Alex Eshoo
17.03.2023 3:02 Количество просмотров материала 3478
Распечатать страницу

1 ответ

следующее echos 0 по какой-то причине, что я не понимаю.

FOR /F "tokens=1-2 delims=," %%A IN (myFile.txt) DO (
    REG QUERY "%%A" /v "%%B"
    ECHO %ERRORLEVEL%

вам нужно EnableDelayedExpansion вместе и использовать ECHO !ERRORLEVEL!.

исправлен пакетный файл:

@echo off
setlocal enabledelayedexpansion
FOR /F "tokens=1-2 delims=," %%A IN (myFile.txt) DO (
    REG QUERY "%%A" /v "%%B"
    ECHO !ERRORLEVEL!
  )
endlocal

выход:

> type myFile.txt
HKEY_LOCAL_MACHINE\PATH\TO\KEY,SOME VALUE

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

Читать Далее

1
отвечен DavidPostill 2023-03-18 10:50

Постоянная ссылка на данную страницу: [ Скопировать ссылку | Сгенерировать QR-код ]

Ваш ответ

Опубликуйте как Гость или авторизуйтесь

Имя
Вверх