цикл удаленной проверки реестра

Я пытаюсь проверить, есть ли на машинах в списке автономная установка 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.

Если я удалю ), он полностью сломает скрипт и не запустится, если я его перемещу, цикл прервется раньше.


person Francis Sutherland    schedule 24.03.2015    source источник


Ответы (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, цикл отменяется.

person MC ND    schedule 24.03.2015
comment
Спасибо, приятель, это было удивительно быстро, круто и стоило как минимум 327 интернет-баллов! (Если бы вы были быстрее, вы могли бы получить 328) - person Francis Sutherland; 24.03.2015