如何解决尝试将输入批量写入正在运行的控制台应用程序时出错
我有一个要与批处理文件一起执行的exe文件。
Exe文件是第三方控制台应用程序,将提示您输入三次。
所以我想用空行,someText和someOtherText填充它
(echo. echo someText echo someOtherText) | call config.exe remove
但是我遇到了这个错误:
Cannot read keys when either application does not have a console or when console input has been redirected. Try Console.Read.
可能是问题所在,请至少建议搜索方向?
即使尝试执行一个更简单的命令,我也会遇到相同的错误:
echo. | call config.exe remove
解决方法
您的config.exe
根本不接受重定向。它需要真实的控制台缓冲区。
- 如果要使其自动化,可以创建另一个控制台应用程序,
- 使用CreateProcessW启动
config.exe
- 使用STD_INPUT_HANDLE(ASCII,
\n
分隔行)或WriteFile(如果需要unicode字符)将行写入WriteConsoleInputW - 写入完成后,只需等待
config.exe
终止并返回退出代码
-
另一个更简单的选择是ConEmu terminal(我是作者)。 GuiMacro scripting可以从控制台轻松使用。因此,您可以从提示符处运行,也可以将其包装在批处理文件中(在ConEmu中运行):
ConEmuC.exe -GuiMacro打印“ \ nsomeText \ nsome Other Text \ n”并删除config.exe
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。