在Windows中,我正在运行一个.bat脚本,它目前以'pause'结尾并提示用户“按任意键继续...” 我无法在此情况下编辑文件,需要脚本终止而不是挂起等待永远不会到来的输入。有没有一种方法可以运行这个脚本以禁用或规避提示?我已经尝试过输入管道,但似乎没有帮助。此脚本通过subprocess.Popen从python运行。
尝试执行 cmd.exe /c YourCmdFile < nul
YourCmdFile
- 您的批处理脚本的完整路径
script.bat <nul
。它也可以作为快捷方式工作。 - dbenhamsubprocess.call("mybat.bat", stdin=subprocess.DEVNULL)
在Windows系统下,可以通过调用mybat.bat
并将输入重定向到nul
来禁用暂停(与其他答案中所示的方法相同)。
devnull = open(os.devnull,'r')
),然后将其作为stdin传递。 - Brent Writes CodeBINARY = "C:/Program Files/foo/bar.exe"
subprocess.call([BINARY])
subprocess.call([BINARY + " < nul"])
subprocess.call([BINARY, " < nul"])
subprocess.call([BINARY, "<", "nul"])
使用shell=True无法正常工作,因为BINARY中的空格使其在尝试查找可执行文件时出现问题。
subprocess.call([BINARY + " < nul"], shell=True)
os.system(quote(BINARY) + " < nul")
虽然不是最理想的方法,但它可以完成工作。
如果有人知道如何使最后一个子进程示例在二进制文件中包含空格的情况下正常工作,将不胜感激!
对我来说,以下代码有效:
p = Popen("c:\script.bat <nul", cwd="c:\")
pause
是内置于cmd
解释器中的命令,因此无法替换它。否则,您可以创建一个pause.exe
并将其放在路径的前面。 - Mark Ransompause <nul
。 - Mark Ransom