在批处理 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
中不需要 :
。
@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
中不需要 :
。