stdin→stdout?

时间:2013-09-13 13:29:57

标签: windows batch-file cmd

Unix echo foo | cat的等价物是什么?

ECHO foo | TYPE CON挂起,等待输入,至少在Windows XP / SP3上。可能CON不是标准输入而是键盘输入。

你可能想知道这个练习的重点是什么:有些程序在注意到它们的输出被管道输出时表现不同,我想要一种方法来测试它们。

2 个答案:

答案 0 :(得分:3)

不确定你想做什么,但这可能会有所帮助:

type file|more

这可能更适合您的需求。

foo.exe | findstr "^"

答案 1 :(得分:1)

据我了解,您正在寻找一个可以管道的应用程序,只需将通过管道输送到stdout的任何内容传递给它。

我相信foo.exe | more将在Windows上实现您的目的。

注意:more确实具有分页输出的副作用,因此如果您需要测试更长的输出,您可以编写一个执行重定向的简单应用程序。

编辑:您可以编写一个简单的批处理文件来将stdin重定向到stdout并将其传递给它。 来自jeb的回答here

@echo off
setlocal DisableDelayedExpansion

for /F "tokens=*" %%a in ('findstr /n $') do (
  set "line=%%a"
  setlocal EnableDelayedExpansion
  set "line=!line:*:=!"
  echo(!line!
  endlocal
)

将其另存为redir.bat并使用foo.exe | redir.bat之类的内容。在Win7上测试过。兼容默认的Windows安装。唯一的缺点是它不容易记住。

对于简单的情况,我会使用more,并且为了更长的输出而使用{{1}}。