【发布时间】:2011-11-03 03:43:48
【问题描述】:
我正在尝试运行提示输入“Enter”或“y”以继续的 Windows (XP) 命令行程序。目前,我可以通过运行程序来响应“y”:
echo y | name_of_binary
在批处理文件中。
我不知道如何告诉 shell 在需要时用“Enter”或“y”响应。如果它进入“按 Enter 继续”类型的提示(其中没有很多,但足以引起问题)并回显“y”,它会卡在一个奇怪的循环中并且不会接受任何输入(它会喷出数千个“按回车键继续”)。如果我可以先回显一个 Enter,然后依次回显一个“y”,那可能会奏效,但我尝试回显“Enter”按键的所有方法都不起作用。
我最终在 Python 中通过os.system() 调用这个批处理文件。如果有办法让 Python 运行二进制文件(通过 os.system(name_of_binary)?)并响应提示,那将是理想的。我已经尝试过os.system(echo y | name_of_binary),它的行为方式与批处理文件相同(应该如此)。我应该使用不同的方法,还是可以通过修改我当前使用的“echo ...”命令来解决这个问题?
【问题讨论】:
-
使用pexpect python模块,你可以在批处理文件提示时发送你想要的响应
-
同意,pexpect('expect'python 模块)可能更合适,因为 OP 已经在使用 python。简而言之,expect 是做到这一点的正确方法。它就是为此目的而建造的。
-
@dave35:如果您仍然对这个主题感兴趣,请参阅this question,它展示了一种在批处理中模拟 pexpect Phyton 模块的方法。寻找 Aacini 的答案。
标签: python windows batch-file cmd