Python中如何调用bat文件并传递参数?
最近在学 python,其中有调用了 bat 命令文件,之间是怎么传参的呢
Python中如何调用bat文件并传递参数?
11 回复
如果是我想法可能是直接执行 shell 命令,subprocess.popen()
import subprocess
# 方法1:直接调用(推荐)
bat_file = "script.bat"
arg1 = "value1"
arg2 = "value2"
# 构建命令列表
cmd = [bat_file, arg1, arg2]
# 执行bat文件
result = subprocess.run(
cmd,
capture_output=True, # 捕获输出
text=True, # 以文本形式返回
shell=True # 通过shell执行(Windows需要)
)
print("返回码:", result.returncode)
print("输出:", result.stdout)
if result.stderr:
print("错误:", result.stderr)
# 方法2:使用字符串命令(注意参数转义)
cmd_str = f'{bat_file} "{arg1}" "{arg2}"'
result = subprocess.run(cmd_str, shell=True, capture_output=True, text=True)
# 方法3:实时获取输出
process = subprocess.Popen(
cmd,
stdout=subprocess.PIPE,
stderr=subprocess.PIPE,
text=True,
shell=True
)
# 实时读取输出
for line in process.stdout:
print("实时输出:", line.strip())
# 等待完成并获取返回码
return_code = process.wait()
关键点:
- 用
subprocess.run()最简单,能直接获取结果 - 必须设置
shell=True才能在Windows正常执行bat - 参数直接放在列表里,subprocess会自动处理空格和特殊字符
- 用
capture_output=True捕获输出,text=True避免字节编码问题
bat文件示例(script.bat):
@echo off
echo 参数1: %1
echo 参数2: %2
exit /b 0
一句话建议:用subprocess.run加shell=True最稳。
os.system(“xxx.bat -arg1 -arg2”)
我目前是用这种方法,但是不知道 bat 文件里该如何接收参数
请问 bat 文件里该如何接收-arg1 -arg2 参数呢
#4 这就是你 bat 的问题了,就不是 Python 的问题了。
#3 ls +1 可能要去学习一下相关语法
%1 是第一个参数,
%2 是第二个参数,
以此类推
%0 是 bat 脚本的名字我记得
好的 非常感谢
好的 非常感谢
谢谢,可以了

