如果存在!SOMEPATH! 不在batch file中工作

我有一个批处理脚本,其中我使用多个如果存在语句,问题是所有语句正在工作,除了一个。

以下variables被设置

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! 

这个声明不起作用,不起作用我的意思是即使你的path不存在它仍然试图robocopy。

 if exist !tfworkspacepathservice! ( robocopy !tfworkspacepathservice! /E /NFL /NJS /NDL /ETA "!basedir!\!scripts!") else SET /a foldererror =!foldererror!+1 

我是批量写作新手,请指导我

首先,我向所有来这里寻求帮助的人道歉。

什么问题 ?

我有一个if语句validation一个子应用程序variables,如果它是空的,语法上它是不完美的。见下面的BAD语法

 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不会发出任何警告,我一直在validation我的脚本,直到我意外地发现。 我把它放在这里,让别人可以从我的错误中受益:)