2015-12-30 80 views
0

运行此脚本后显示somesoftware这是意外的,这一次我使用的是Windows 7 64位。试图使用注册表获取软件的安装位置。如果我赞同THE_NAME然后我得到正确的安装位置,但脚本退出的,如果别人说somesoftware是意外的这段时间批处理脚本此时意外

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. 
) 

回答

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%,所以我可以测试...

你会想用这个作为通知您最终剧本的指南。

+0

如果你设置一个变量为空(空),它会得到** un **定义 - 你的测试用例清楚地显示出来。 – Stephan

+0

@Stephan,很好,我认为我仔细检查了一下。我从我的答案中删除了虚假示例。 –