Windows shell具有%ERRORLEVEL%变量,可用于查找已通过shell运行的进程的退出代码。因此,我可以在.bat文件中使用它来获取我在.bat文件中调用的外部脚本的退出代码。我想从我调用的进程(第一个实例中的堆栈跟踪)中返回更丰富的错误信息。我想从我正在运行的Python脚本中返回这个,我可以使用Python' traceback'模块。我可以在%ERRORLEVEL%中持有吗?这个变量有没有文档?
答案 0 :(得分:2)
%ERRORLEVEL%
返回程序的退出代码,即它是一个整数值,没有字符限制。正如wiki document for DOS中提到的那样:
在DOS术语中,
errorlevel
是可执行程序或子例程返回的整数退出代码。错误级别通常在0到255之间。
Windows section of the same document说:
Windows使用32位无符号整数作为退出代码,尽管命令解释程序将它们视为已签名。
答案 1 :(得分:2)
如果您正在寻找返回字符串,则无法为%ERRORLEVEL%
分配字符串。有关%ERRORLEVEL%
here的文档。
你可以尝试一个环境变量 - 我不会编写python代码,但我确信在Python中有这样的方法,你可以批量访问它们。
此外,如果您事先知道将抛出哪些错误,则可以为每个错误分配一个编号,然后分别退出并分别具有批处理输出。但那很无聊,真的难以理解,所以你可能不想这样做。
答案 2 :(得分:0)
有时%ERRORLEVEL%的下限是-2147483648,例如批处理文件:
set /a ERRORLEVEL = -1
:LOOP
set /a ERRORLEVEL = ERRORLEVEL * 2
REM ERRORLEVEL = %ERRORLEVEL%
@pause
@Goto :LOOP
将输出
REM ERRORLEVEL = -2147483648
之前
REM ERRORLEVEL = 0
但是命令
set /a ERRORLEVEL = -2147483648
返回 “无效的数字。数字仅限于32位精度。”
set /a ERRORLEVEL = -2147483647
有效。