如果存在 !SOMEPATH!,则批处理文件中不起作用

如果存在 !SOMEPATH!,则批处理文件中不起作用

我有一个批处理脚本,其中使用了多个 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 也不会发出任何警告,并且我继续验证我的脚本,直到我偶然发现这一点。我把它放在这里,以便其他人可以从我的错误中受益:)

相关内容