繁体   English   中英

如何在我的 python 脚本中运行批处理命令?

[英]How to run batch command in my python script?

我必须在我的 Python 脚本中运行一行批处理命令。

目前,我将命令保存在.bat文件中并使用subprocess执行.bat文件。 但我想省略.bat文件并直接将命令包含在我的python脚本中。 因为我可能需要针对不同的用例使用不同的 bat 文件。 我宁愿使用一个动态 python 脚本也不愿保存多个.bat文件。

蝙蝠命令:

"C:\Program Files (x86)\temp\FL.B5.exe" /s /a "C:\Users\kuk\Downloads\B5+Typ B.2.asc" /o "C:\Users\kuk\Download\B5+Typ B.2.docx"

Python 脚本是:

import subprocess as sp
sp.call([r"C:\Users\kuk\Downloads\test.bat"])

我想要的是:

import subprocess

exe = r"C:\Program Files (x86)\temp\FL.B5.exe"
input = r"C:\Users\kuk\Downloads\B5+Typ B.2.asc"
output = r"C:\Users\kuk\Downloads\B5+Typ B.2.docx" 

cmd = '{} /s /a {} /o {}'.format(soft,var1,var2)

subprocess.call(cmd)

我不知道出了什么问题,但无法执行脚本。

任何帮助,将不胜感激!!

你的问题是模棱两可的。 如果我解释正确,你可以使用os.system

os.system是一个 function,它从控制台执行命令。

import os

os.system('"C:\Program Files (x86)\temp\FL.B5.exe" /s /a "C:\Users\kuk\Downloads\B5+Typ B.2.asc" /o "C:\Users\kuk\Download\B5+Typ B.2.docx"')

不要使用input作为变量名。 它是一个 python 内置 function。

subprocess.call方法将一个列表作为参数。 在处理 shell 执行任务时,我喜欢使用shlex库来引用参数并将命令拆分为列表。

注意:我已经有 12 年没有在 Windows 上执行脚本了,所以我不确定 shlex 与该平台的兼容性如何。

import shlex
import subprocess as sp

exe = r"C:\Program Files (x86)\temp\FL.B5.exe"
in_file = r"C:\Users\kuk\Downloads\B5+Typ B.2.asc"
out_file = r"C:\Users\kuk\Downloads\B5+Typ B.2.docx" 

params = tuple([shlex.quote(p) for p in (exe, in_file, out_file)])

command =  f'%s /s /a %s /o %s' % params

sp.call(shlex.split(command))

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM