我有一个批处理脚本,其中我使用多个如果存在语句,问题是所有语句正在工作,除了一个。
以下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我的脚本,直到我意外地发现。 我把它放在这里,让别人可以从我的错误中受益:)