这次批处理脚本是意外的

时间:2015-12-30 05:49:39

标签: batch-file scripting

运行此脚本后显示某些软件出乎意料,这次我使用的是Windows 7 64位。试图使用注册表获取软件的安装位置。如果我回应了THE_NAME,那么我得到了正确的安装位置,但脚本退出了,如果没有说这些软件本意外的话

setlocal ENABLEEXTENSIONS
set KEY_NAME=HKEY_CURRENT_USER\Software\somesoftware
set VALUE_NAME=InstallDirectory

SET THEME_NAME=
FOR /f "usebackq tokens=2,*" %%a in (`REG QUERY "HKEY_CURRENT_USER\Software\somesoftware" /v InstallDirectory`) DO (
    SET THEME_NAME=%%b
)
echo %THEME_NAME%
if defined THEME_NAME (
set PathValue= %THEME_NAME%

     ) else (
   echo %KEY_NAME%\%VALUE_NAME% not found.
 )

1 个答案:

答案 0 :(得分:0)

您的脚本未使用KEY_NAME或VALUE_NAME,这可能就是您缩减示例的方式。

我修改了你的脚本,如下所示进行测试,它看起来像我预期的那样工作。

setlocal ENABLEEXTENSIONS
set KEY_NAME=HKEY_CURRENT_USER\Software\%1
set VALUE_NAME=InstallDirectory

SET THEME_NAME=
FOR /f "usebackq tokens=2,*" %%a in (`REG QUERY "%KEY_NAME%" /v %VALUE_NAME%`) DO (
    SET THEME_NAME=%%b)
echo THEME_NAME=%THEME_NAME%
if NOT ""=="%THEME_NAME%" (
    set PathValue=%THEME_NAME%
    echo PathValue=%PathValue% 
) else (
    echo %KEY_NAME%\%VALUE_NAME% not found.
)

注意:我将IF测试更改为仅测试空字符串,我自己调试的回声,我使用%1,所以我可以测试...

您需要将此作为指导,以通知您的最终脚本。