【发布时间】: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);
欢迎就如何实现这一目标提出建议。
【问题讨论】:
-
有时在调用控制台应用程序的命令行上附加
<Yes是可行的。但这取决于RunMe.exe如何处理用户输入。 -
环境究竟是MS-DOS还是Windows命令提示符?在 Windows 的情况下,您可以模拟被按下的键。我认为这在 DOS 中也可以通过修改预输入缓冲区来实现,但坦率地说,我的 DOS 编程年头早已过去,我对此不确定
-
这是 Windows 命令提示符,本质上与 msdos 相同(或多或少)。感谢您的回复。
标签: perl batch-file