Batch file FOR/D以失败终止(…此时意外)
我有一个.bat文件,其中包含Jenkins CI job执行的这些行。它应该删除指定目录中的所有子目录,但两个匹配的IF条件除外Batch file FOR/D以失败终止(…此时意外),batch-file,Batch File,我有一个.bat文件,其中包含Jenkins CI job执行的这些行。它应该删除指定目录中的所有子目录,但两个匹配的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\bu
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日志a中,请参见:
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批处理命令”将生成标记为失败
FOR /D %G IN (*) DO (
IF NOT "%G" == "%LAST_EXPORT_BUILD_PATH%" IF NOT "%G" == "%EXPORT_BUILD_PATH%" (
rd /s /q "%G"
)
)
引用元变量(循环控制变量)的每个%G
必须是%G
引用元变量(循环控制变量)的每个%G
必须是%G您需要像这样更改它:
FOR/D%%G IN(*)DO(
如果/I不是“%EXPORT\u BUILD\u ROOT%\%%G”=“%LAST\u EXPORT\u BUILD\u PATH%”(
如果/I不是“%EXPORT\u BUILD\u ROOT%\%%G”==“EXPORT\u BUILD\u PATH%”RD/S/Q“%%G”)
)
括号的位置很重要,批处理文件变量中的%
加倍也很重要。您需要像这样更改它:
FOR/D%%G IN(*)DO(
如果/I不是“%EXPORT\u BUILD\u ROOT%\%%G”=“%LAST\u EXPORT\u BUILD\u PATH%”(
如果/I不是“%EXPORT\u BUILD\u ROOT%\%%G”==“EXPORT\u BUILD\u PATH%”RD/S/Q“%%G”)
)
括号的位置以及批处理文件变量中%
的加倍都很重要