使用 python 脚本将文本传递到 Windows cmd 行

问题描述

我正在尝试编写一个简单的 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"))