加到stdin

我有一个交互式命令行程序,我们将其称为program.exe。 当它运行时,我可以input一些不同的命令来完成不同的事情。 我们会打电话给他们:doA,doB,doC,然后退出。 现在,事实certificate,我想在program.exe中做的第一件事情总是 doA。 我想节省一些击键,并自动让program.exe在启动时运行doA命令。 不幸的是,我不能在命令行上传递“doA”,因为创buildprogram.exe的人没有实现这个function。

我看到它的方式,我有几个select:

echo doA | program.exe

这是有效的,因为program.exe执行doA,但是我不能input任何其他命令到program.exe。 回声占用了program.exe的stdin

more | echo doA | program.exe

这也起作用,并接近我后面的一点。 program.exe执行doA,我看到doA的输出。 我也可以input额外的命令,但是我看不到这些命令的输出。 此外,当我发送退出命令,program.exe终止(我猜),但我仍然卡在“更多”命令,我可以继续打字行,直到我按Ctrl + C。

问题:还有另一种方法来做我想用bat文件做的事情吗? 从概念上讲,我想我需要将两个stream(键盘和文字“doA”)合并为一个,然后将其传递到program.exe中,但是我可能会离开。

Solutions Collecting From Web of "加到stdin"

首先, more | echo doA | program.exe more | echo doA | program.exe more | echo doA | program.exe不会做你认为它的事情。 发送doA echo ,不会将这些管道阶段连接在一起,而是创建完美的接收器 – 这就是为什么您看不到您的命令回应。 他们无处可去,并没有program.exe执行。 我不认为有一种简单的方法可以直接从命令行实现你想要的东西,但是使用小批量文件很容易解决。 创建一个批处理文件,说args.bat

 @echo off echo First command more 

现在通过args|program.exe运行你的程序