从Windows命令行运行此批处理文件导致%errorlevel%为5(即在执行批处理文件后在命令行上运行echo %errorlevel%
打印数字5):
EXIT /B 5
这很好。
但是,运行此批处理文件会导致%errorlevel%为0,无论如何:
sleep 1
EXIT /B 5
我希望它返回错误代码5.我该怎么做?
注意:如果我将sys.exit(13)添加到sleep.py(见下文),那么第二个批处理文件将返回退出代码为13.所以我的批处理文件将返回,退出代码为sleep.py脚本而不是通过EXIT命令指定的退出代码(这很奇怪)。
sleep.bat:
sleep.py %1
sleep.py:
import sys
import time
if len(sys.argv) == 2:
time.sleep(int(sys.argv[1]))
答案 0 :(得分:3)
sleep
是一个批处理文件。以这种方式从另一个批处理文件调用批处理文件时,控件永远不会返回给调用者(类似于POSIX中的exec
)。请改用call sleep 1
。
或者只是睡觉内置程序:
:sleep1
setlocal
set /a X=%~1 + 1
ping ::1 -n %X% >nul 2>&1
endlocal
goto :eof
:sleep2
timeout /T %1 /nobreak
goto :eof