Batch file 这一次批处理脚本是意外的
运行此脚本后,显示某些软件是意外的,这次我使用的是64位windows 7。正在尝试使用注册表获取软件的安装位置。如果我回显了_名称,那么我就得到了正确的安装位置,但脚本在if-else中退出,表示这次某个软件出人意料Batch file 这一次批处理脚本是意外的,batch-file,scripting,Batch File,Scripting,运行此脚本后,显示某些软件是意外的,这次我使用的是64位windows 7。正在尝试使用注册表获取软件的安装位置。如果我回显了_名称,那么我就得到了正确的安装位置,但脚本在if-else中退出,表示这次某个软件出人意料 setlocal ENABLEEXTENSIONS set KEY_NAME=HKEY_CURRENT_USER\Software\somesoftware set VALUE_NAME=InstallDirectory SET THEME_NAME= FOR /f "useb
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.
)
您的脚本没有使用KEY\u NAME或VALUE\u 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以便可以测试
您需要将此作为指导来通知您的最终脚本。如果您将变量设置为nothing(空),它将被取消定义-您的测试用例清楚地显示了这一点。@Stephan,很好的理解…我想我已经仔细检查过了。我已经从我的答案中删除了这个虚假的例子。