【问题标题】:How to response on a Windows command line prompt?如何在 Windows 命令行提示符下响应?
【发布时间】:2023-03-20 13:02:01
【问题描述】:

我正在尝试编写一个 Windows 批处理文件来执行一个运行良好的程序。但是执行的程序 (.exe) 会停止并要求用户输入Yes 才能继续。

有没有办法可以将Yes 自动发送到控制台应用程序?

我正在编写的代码是通过这个特定的可执行文件传递大约 2,000 个文件,每个文件都需要Yes 响应才能继续。

我尝试过使用 echo Yes。我试过睡觉然后回显Yes,但这些不起作用。有没有其他方法可以做到这一点?

您应该知道 Windows 批处理文件实际上是由 Perl 脚本编写的。 Perl 脚本获取文件列表,构造所需的命令行命令,然后通过命令行重定向将它们输出到 .bat 文件。然后手动执行此 .bat 文件。我的 Perl 代码是:

$inFile = 'fileList.txt';
$key = '"-----BEGIN RSA PRIVATE KEY-----"';

open(IN, "< $inFile");
while (<IN>) {
  chop();
  printf ("RunMe.exe --key %s \"%s\"\n",$key,$_);
  printf("del \"%s.bak\"\n",$_);
}
close(IN);

欢迎就如何实现这一目标提出建议。

【问题讨论】:

  • 有时在调用控制台应用程序的命令行上附加&lt;Yes 是可行的。但这取决于RunMe.exe 如何处理用户输入。
  • 环境究竟是MS-DOS还是Windows命令提示符?在 Windows 的情况下,您可以模拟被按下的键。我认为这在 DOS 中也可以通过修改预输入缓冲区来实现,但坦率地说,我的 DOS 编程年头早已过去,我对此不确定
  • 这是 Windows 命令提示符,本质上与 msdos 相同(或多或少)。感谢您的回复。

标签: perl batch-file


【解决方案1】:

['yes' 命令] 将无限期地回显“y”(或任何您要求的)。将其用作:

'yes | command-that-asks-for-input'

或者,如果需要大写“Y”:

'yes Y | command-that-asks-for-input'

【讨论】:

    猜你喜欢
    • 2019-01-11
    • 2014-12-18
    • 1970-01-01
    • 2012-07-07
    • 2021-08-28
    • 2013-06-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多