我有一个.bat文件,这些行由Jenkins CI作业执行。除了两个匹配的IF条件外,它应该删除指定目录中的所有子目录。
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日志中,请参阅:
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批处理命令'将构建标记为失败
答案 0 :(得分: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")
)
您的括号的位置很重要,以及批处理文件中的 %
加倍。
答案 1 :(得分: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