从Python调用后,从Batch中获取ERRORLEVEL的值(或返回代码)

问题描述 投票:0回答:1

我制作了一个脚本(称为isPA64.bat),以确定执行系统是否为64位(基于此Bear's Log技巧:]

@echo off
setlocal
set str1=%PROCESSOR_ARCHITECTURE%
set/A sixty4=0
if not x%str1:64=%==x%str1% set/A sixty4=1
endlocal & exit/B %sixty4%

它是从另一个名为callpa.bat的简单批处理中调用的(也可以直接调用,但这证明ERRORLEVEL确实可以正确设置):

@echo off
ver>nul & (call isPA64.bat & if ERRORLEVEL 1 (echo 64-bit & exit/B 1) else (echo not 64-bit & exit/B 0))

到目前为止,一切正常;但是,我必须从Python 3.7.2程序中调用这两个之一。我这样做:

import subprocess
print(subprocess.run(["callpa.bat"]))

很简单,对吧?但是我还没办法弄清楚如何在python代码中找回有效的返回代码...有没有办法在python代码中将变量分配给“退出” /返回代码或从执行外部脚本的cmd.exe Shell中获取ERRORLEVEL的值? ...我无法在python文档中找到实现此目的的方法。

python batch-file subprocess errorlevel return-code
1个回答
0
投票

无需创建其他批处理文件:

import os
arch = os.environ('PROCESSOR_ARCHITECTURE')
if arch == 'x86':
    print("x64")
    exit(0)
else:
    print("not x64")
    exit(1)

然后将其导入为错误级别变量。

© www.soinside.com 2019 - 2024. All rights reserved.