从批处理函数返回错误级别不起作用

时间:2016-05-18 16:31:54

标签: batch-file errorlevel

我在批处理脚本中有一些功能:

:run
set "CMD=%*"
<...>
timeout 300s !CMD!
if %errorlevel% equ 0 (
    echo !CMD! >>  ./!_tool!.OK
) else (
    echo !CMD! >>  ./!_tool!.FAIL
    echo exitcode= %errorlevel% >> ./FAIL
    echo ===STOP=== %date% %time%
    exit /b %errorlevel%
)
exit /b %errorlevel%

并在主循环中检查其%errorlevel%代码:

for /f "tokens=*" %%t in (%TEST_LIST%) do (
    <...>
    call :run %TOOL% -O0 -S %REPO_PATH%\%%t
    if %errorlevel% equ 0 (
        echo %%t PASSED
    ) else (
        echo %%t FAILED
    )

timeout 300s !CMD!返回错误级别1并将exit /b %errorlevel%返回为1(正在创建./!_tool!.FAIL等等)的问题不会影响主循环的IF和即将获得echo %%t PASSED无论如何。

无法通过这种方式检查功能返回码或什么?

P.S。一些&lt; ...&gt;代码工作正常,所以我把它剪掉了

1 个答案:

答案 0 :(得分:0)

感谢@Stephan我发现了我的问题 - 我应该在FOR循环中使用composer require geoip2/geoip2:~2.4.0 而不是!errorlevel!,因此它应该刷新每次迭代