У меня есть пакетный скрипт, в котором я использую несколько операторов if exists, проблема в том, что все операторы работают, кроме одного.
Устанавливаются следующие переменные
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
Я новичок в пакетной записи, пожалуйста, помогите мне
Прежде всего, мои извинения всем, кто пришел сюда, пытаясь помочь.
что случилось ?
У меня был оператор if, который проверяет переменную субприложения, если она пуста, с точки зрения синтаксиса, она была несовершенной. см. синтаксис 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 не выдает никаких предупреждений, и я продолжал проверять свой скрипт, пока не нашел это случайно. я помещаю это здесь, чтобы кто-то другой мог извлечь выгоду из моей ошибки :)