![如果存在 !SOMEPATH!,则批处理文件中不起作用](https://linux22.com/image/634741/%E5%A6%82%E6%9E%9C%E5%AD%98%E5%9C%A8%20!SOMEPATH!%EF%BC%8C%E5%88%99%E6%89%B9%E5%A4%84%E7%90%86%E6%96%87%E4%BB%B6%E4%B8%AD%E4%B8%8D%E8%B5%B7%E4%BD%9C%E7%94%A8.png)
我有一个批处理脚本,其中使用了多个 if exist 语句,问题是除一个语句之外所有语句都有效。
设置以下变量
SETLOCAL ENABLEDELAYEDEXPANSION
SET basedrive=E:
SET tfworkspace=!basedrive!\TFS
SET envdefault=%1
SET projenv=!envdefault!
echo subapp=!subapp! subappservice=!subappservice!
SET tfworkspacepath=!tfworkspace!\!releasebranch!\!app!\!subapp!
这句话有效,
if exist "!tfworkspacepath!" (robocopy "!tfworkspacepath!"\sourcecode\messagebroker\ /E /NFL /NJS /NDL /ETA "!basedir!\!messagebroker!" ) else SET /a foldererror=1
SET tfworkspacepathservice=!tfworkspace!\!releasebranch!\!app!\!subapp!\sourcecode\build\!projenv!
该语句不起作用,不起作用的意思是即使路径不存在它仍然会尝试进行 robocopy。
if exist !tfworkspacepathservice! (
robocopy !tfworkspacepathservice! /E /NFL /NJS /NDL /ETA "!basedir!\!scripts!") else SET /a foldererror =!foldererror!+1
我是批量写入的新手,请指导我
答案1
首先,我向所有来这里试图提供帮助的人表示歉意。
什么问题 ?
我有一个 if 语句,用于验证 subappservice 变量是否为空,语法上它是不完善的。请参阅下面的错误语法
if NOT !subappservice!=="" (SET scripts=!scripts!\!subapp!) else SET projenv=!projenv!\!subappservice!& SET scripts=!scripts!\!subapp!\!subappservice!
我将其更正为以下内容以解决问题
if [!subappservice!]== [] (SET scripts=!scripts!\!subapp!) else SET projenv=!projenv!\!subappservice!& SET scripts=!scripts!\!subapp!\!subappservice!
我的看法 - 即使语法不好或不完善,CMD.exe 也不会发出任何警告,并且我继续验证我的脚本,直到我偶然发现这一点。我把它放在这里,以便其他人可以从我的错误中受益:)