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()

关键点:

  1. subprocess.run()最简单,能直接获取结果
  2. 必须设置shell=True才能在Windows正常执行bat
  3. 参数直接放在列表里,subprocess会自动处理空格和特殊字符
  4. 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 脚本的名字我记得

好的 非常感谢

好的 非常感谢

谢谢,可以了

回到顶部