2017-02-13 4 views
1

У меня есть .bat-файл с этими строками, выполненный Jenkins CI job. Он должен удалить все подкаталоги в указанном каталоге, кроме двух соответствующих условий IF.FOR/D завершает работу с ошибкой (... неожиданно в это время)

SET EXPORT_ROOT=C:\WWW\LocalUser\myfolder 
SET EXPORT_BUILD_ROOT=%EXPORT_ROOT%\build 
SET EXPORT_BUILD_PATH=%EXPORT_BUILD_ROOT%\26 
SET LAST_EXPORT_BUILD_PATH=C:\WWW\LocalUser\myfolder\build\25 

cd %EXPORT_BUILD_ROOT% 
FOR /D %G IN (*) DO (
    IF NOT ("%EXPORT_BUILD_ROOT%\%G" == "%LAST_EXPORT_BUILD_PATH%") IF NOT ("%EXPORT_BUILD_ROOT%\%G" == "%EXPORT_BUILD_PATH%") (
     rd /s /q "%G" 
    ) 
) 
cd "%DEPLOY_DIR%" 

В Jenkins CI войти в SEE:

C:\WWW\LocalUser\myfolder\deploy>cd C:\WWW\LocalUser\myfolder\build 
G" == "C:\WWW\LocalUser\myfolder\build\57") IF NOT ("EXPORT_BUILD_PATHG")) was unexpected at this time. 

C:\WWW\LocalUser\myfolder\build>FOR /D G" == "C:\WWW\LocalUser\myfolder\build\57") IF NOT ("EXPORT_BUILD_PATHG")) 

шаг сборки 'Выполнить Windows, пакетную команду' отмечены строить как отказ

ответ

4

Вы должны изменить его больше, как это:

FOR /D %%G IN (*) DO (
    IF /I NOT "%EXPORT_BUILD_ROOT%\%%G"=="%LAST_EXPORT_BUILD_PATH%" (
     IF /I NOT "%EXPORT_BUILD_ROOT%\%%G"=="%EXPORT_BUILD_PATH%" RD/S/Q "%%G") 
) 

позиционирование ваших Скобки является важным, а также удвоение % в пакетном файле meatvariable.

+0

Спасибо, он работает! – miloshavlicek

2
FOR /D %G IN (*) DO (
    IF NOT "%G" == "%LAST_EXPORT_BUILD_PATH%" IF NOT "%G" == "%EXPORT_BUILD_PATH%" (
     rd /s /q "%G" 
    ) 
) 

Каждый %G со ссылкой на metavariable (петля-контроль переменная) должна быть %%G

Смежные вопросы