在批处理 FOR 命令中处理 error_level 变量

Handle error_level variable in batch FOR command

@echo off
setlocal enabledelayedexpansion

set JAVA_HOME=C:\java
set "CLASSPATH=C:\iDQS\runtime\bin\..\lib\;"


for /f "delims=" %%i in (%~dp0\plan_list_dev.txt) do (

call C:\iDQS\runtime\bin\runcif -runtimeConfig "%~dp0\..\..\runtimeCfg.xml" -statusFile "%~dp0\..\..\planstatusfile\new_status_file_%%i.txt" "%~dp0\%%i.plan" >> "%~dp0_new_log_%%i.txt"

if !errorlevel! == 0 goto :picknextplan
    echo !errorlevel!.1
    echo "Error at %%i loop"
exit -99

:picknextplan
echo %~dp0%%i
)


if %errorlevel% == 0 goto :next
echo "Errors encountered during plan execution.  Exited with status: %errorlevel%"
EXIT -99 
goto :endofscript

:next
echo "Ending Plan execution"

:endofscript

EXIT

plan_list_dev.txt 包含参数列表作为计划名称,例如

clean_data
load_data

它 运行 只是第一个参数 "clean_data" 并继续退出 ... 我希望两者都应该 运行 ..只有在任何失败时退出或以非零退出 error_level.

谁能帮我解决一下吗?

if !errorlevel! NEQ 0 (
    echo !errorlevel!.1
    echo "Error at %%i loop"
exit -99)

echo %~dp0%%i

不应在 code block(带括号的代码序列)

中使用标签
EXIT -99 
goto :endofscript

这个顺序不合逻辑。 exit 语句终止进程,因此 goto 永远不会执行。

goto 中不需要 :