Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/batch-file/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Batch file FOR/D以失败终止(…此时意外)_Batch File - Fatal编程技术网

Batch file FOR/D以失败终止(…此时意外)

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

我有一个.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\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”)
)
括号的位置以及批处理文件变量中
%
的加倍都很重要