Windows 中的管道

Posted

技术标签:

【中文标题】Windows 中的管道【英文标题】:Piping in Windows 【发布时间】:2017-03-13 15:33:59 【问题描述】:

我有一个控制台来控制设备驱动程序。这个工具允许我输入数字和设备的更改参数。这是在Windows系统上执行的。为了不手动输入数字,我将这些数字传递给可执行文件,就像这样..

cd %tool_path%
(
echo 1
echo 2
echo 3
)myconsole.exe

这是我的问题,有没有办法在这些回声之间设置延迟?如果我能读取输出会更好,这样我就可以根据输出发送不同的数字。

我的想法是用 C 或 C++ 编写一个简短的程序,并在其中处理这些延迟。但我真的找不到这方面的例子。这是我发现的。

https://msdn.microsoft.com/de-de/library/windows/desktop/ms682499(v=vs.85).aspx

但在这个例子中,我不知道在哪里可以输入myconsole.exe。 我还查看了命名管道,但它们似乎不适合这项任务。

【问题讨论】:

【参考方案1】:

您应该看看名为 expect 的 Unix 工具 - ActiveState 有一个 Windows 版本。

基本上,您可以执行以下操作:

send "Hello\r\n"
sleep 1
send "Something\r\n"
expect 
   "> "  
   "$ "  

if  $a == "soup"  
   puts "You have soup!"
else 
   puts "No soup for you!"

here 和整个网络都有示例 - 查找 Tcl/expect tutorials

【讨论】:

以上是关于Windows 中的管道的主要内容,如果未能解决你的问题,请参考以下文章

适用于 Windows 和 Linux 的 Go 中的命名管道

Windows 中的管道

从底层的角度来看,Windows 中的命名管道和远程过程调用 (RPC) 有啥区别?

无法在 Windows 7 中的命名管道内创建进程

Windows 中的 python 2 和 python 3 之间的命名管道的工作方式有啥不同吗?

使用管道将 Windows 命令解析为批处理文件中的变量 [重复]