禁用Windows bat脚本中的“暂停”

时间:2012-07-30 21:04:55

标签: python windows batch-file cmd

在Windows中,我正在运行一个当前以“暂停”结束的蝙蝠脚本,并提示用户“按任意键继续...”

我无法在这种情况下编辑文件,我需要终止脚本而不是挂起等待永远不会来的输入。有没有办法可以运行它来禁用或绕过提示?

我已尝试输入管道,似乎没有帮助。这个脚本是从python通过subprocess.Popen。

运行的

4 个答案:

答案 0 :(得分:13)

尝试执行cmd.exe /c YourCmdFile < nul

YourCmdFile - 批处理脚本的完整路径

答案 1 :(得分:4)

这个结果有点痛苦。从Maximus重新定向nul工作得很好,谢谢!

至于让它在python中工作,它归结为以下几点。我开始时:

BINARY = "C:/Program Files/foo/bar.exe"
subprocess.call([BINARY])

试图添加重定向,但是subprocess.call会很好地转义所有内容,并且我们放弃了重定向。

subprocess.call([BINARY + " < nul"])
subprocess.call([BINARY, " < nul"])
subprocess.call([BINARY, "<", "nul"])

使用shell = True不起作用,因为BINARY中的空格使得它试图找到可执行文件。

subprocess.call([BINARY + " < nul"], shell=True)

最后,我不得不回到os.system并逃脱自己以获得重定向。

os.system(quote(BINARY) + " < nul")

不理想,但它完成了工作。

如果有人知道如何使用最后一个子进程示例来处理二进制文件中的空格,那么会非常感激!

答案 2 :(得分:4)

subprocess.call("mybat.bat", stdin=subprocess.DEVNULL)

会调用mybat.bat并在Windows上重定向来自nul的输入(这会禁用暂停,如其他答案所示)

答案 3 :(得分:0)

对我来说,以下代码有效:

p = Popen("c:\script.bat <nul", cwd="c:\")