我在 Superuser 上的相关帖子中读到过关于这个问题的内容;然而,我的问题略有不同,而且可能很难解决:我正在使用一个名为 Paup* 的系统发育程序,并编写了一个批处理脚本来自动化我的分析。
为了自动执行此过程,我的批处理脚本会创建一个临时文件,其中包含一系列供 Paup* 执行的“作业”。因此,我的批处理文件不会直接与 Paup* 应用程序交互(Paup* 有自己的命令行界面)。
每次分析进行到一半时,Paup* 都会要求用户输入(Y/N 格式)一个我无法在作业文件中预先指定的选项。我查看了命令手册,也找不到抑制此对话框提示的方法。
本质上,我需要直接向 Paup* 提交按键,但只有当 Paup* 明确要求我输入时才提交。否则,提交将无响应,因为输入未排队。有什么方法可以实现这一点吗?
答案1
我不确定您是否可以使用批处理文件完成此操作,但有一种简单的第三方脚本语言适合您的任务。该程序称为 AutoIT。您可以将批处理脚本包含到 AutoIT 中,然后使用 autoit 执行 y 按下。
如果命令窗口在等待输入时有特定名称,则使用 autoit 可以轻松完成。您可以检查 cmd 窗口的名称或标题,然后按 y 或 n。同样,应该可以通过其他不同的方式实现。
答案2
您可以尝试查看“sendkeys”界面。查看 jpsoftware 的 tcc,它具有将键发送到其他窗口的功能,看看这是否是您想要的。
答案3
要使用 Ivan Viktorovic 建议的方法(关于窗口名称),您仍然可以使用 VBScript。只需检查是否存在具有该名称的窗口,然后将窗口名称发送到“AppActivate”并使用“SendKeys”执行 Enter 键,然后发送相应的键以发送 Y 或 N,即可轻松完成。如果您不想下载其他软件,这种方法会更好。