问题描述
我正在尝试编写一个简单的 python 脚本,该脚本将打开 Windows cmd 行,切换到指定目录,然后输入文本:'Test.exe -blah -blahblah etc...' 以运行我的带有我从 cmd 行指定的参数的 Test.exe 可执行文件。
我目前的代码如下:
import subprocess
subprocess.Popen(r'C:\Windows\System32\cmd.exe',cwd=r'C:\PythonTestScripts')
这段代码成功启动了windows cmd.exe,并将目录更改为上面指定的cwd,但是我不知道如何从Python将文本传递到cmd窗口中。
我尝试将它作为字符串参数传递给 subprocess.Popen 括号,我也尝试将 PIPE 分配给 stdin 和 stdout,但运气不佳。我熟悉 Uni 的简单编码,但我不熟悉 Python 的语法或脚本。
非常感谢任何帮助。
解决方法
您的问题之一可能是 cmd.exe 在您启动后不会退出。
我成功地将 /C
参数传递给 cmd.exe
,它告诉它在处理命令后退出。
这有效:
from subprocess import Popen,PIPE
my_command = "dir *.log"
with Popen([r"C:\Windows\System32\cmd.exe","/C",my_command],stdout=PIPE,cwd=r'C:\Temp') as proc:
print(proc.stdout.read().decode().replace("\r\n","\n"))