请考虑以下批处理文件:
=================== exist-test.bat
@echo off
set pavtest=
if EXIST %programfiles(x86)%\AAA (
set pavtest = AAA
echo we have done the AAA test
) ELSE (
if EXIST %programfiles%\BBB (
set pavtest = BBB
echo we have done the BBB test
)
)
假设AAA和BBB文件夹都不存在。然后我认为逻辑将是:
相反,在Win7上发生的是两个echo语句都被执行了,当然,结尾处的pavtest值是BBB。
谁能解释我的逻辑为什么错误?谢谢!
答案 0 :(得分:1)
始终最好的做法是在使用的任何文件路径周围使用双引号。这样可以保护空格和特殊字符。也不要在SET
命令中使用空格。空格成为变量名称和变量值的一部分。
@echo off
set pavtest=
if EXIST "%programfiles(x86)%\AAA" (
set pavtest=AAA
echo we have done the AAA test
) ELSE (
if EXIST "%programfiles%\BBB" (
set pavtest=BBB
echo we have done the BBB test
)
)