运行此脚本后显示某些软件出乎意料,这次我使用的是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.
)
答案 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,所以我可以测试...
您需要将此作为指导,以通知您的最终脚本。