Петля удаленной проверки реестра
Я пытаюсь проверить, установлен ли на компьютерах в списке автономный Outlook 2010 с использованием пакетного файла. Я могу запустить сценарий, если я проверяю код каждой проверки, но мне нужно что-то, что извлекается из файла, это то, что у меня есть до сих пор:
Важная информация:
Я хочу запустить это через командный файл, машины могут быть смесью Windows 7 и XP, и она должна быть в состоянии определить разницу между Office 2010 с Outlook и Outlook Standalone
@echo off
setlocal enabledelayedexpansion
set INPUT_FILE=%1
set UP_OUTPUT_FILE=yes.txt
set DN_OUTPUT_FILE=no.txt
echo These Machines have Outlook 2010: >> %UP_OUTPUT_FILE%
echo These Machines don't have Outlook 2010: >> %DN_OUTPUT_FILE%
for /f %%i in (%INPUT_FILE%) do (
reg query \\%%i\HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\{90140000-001A-0000-0000-0000000FF1CE} > NUL
if errorlevel 1 goto error1
if errorlevel 0 goto error0
:error1
echo %%i >> %DN_OUTPUT_FILE%
goto next1
:error0
echo %%i >> %UP_OUTPUT_FILE%
:next1
)
Проблема, которую я имею, это продолжает возвращать ошибку:
) was unexpected at this time.
Если я удалю )
он полностью разрывает сценарий и не запускается; если я его переместлю, он прерывает цикл раньше.
1 ответ
Решение
for /f %%i in (%INPUT_FILE%) do (
reg query \\%%i\HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\{90140000-001A-0000-0000-0000000FF1CE} > NUL
if errorlevel 1 (
echo %%i >> %DN_OUTPUT_FILE%
) else (
echo %%i >> %UP_OUTPUT_FILE%
)
)
Всякий раз, когда goto
команда выполняется внутри for
цикл, цикл отменяется.