循环远程注册表检查

时间:2015-03-24 13:50:18

标签: cmd remote-registry

我正在尝试检查列表中的计算机是否使用批处理文件安装了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 个答案:

答案 0 :(得分:0)

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命令时,循环就会被取消。