如何使Windows START命令通过管道接受标准输入并将其传递给它调用的命令?

时间:2015-12-29 13:22:28

标签: windows batch-file pipeline

请参阅保存在名为foo.cmd的文件中的此脚本。

@echo off
more +5

此脚本现在可以这种方式使用。

dir C:\Windows | foo

它显示从第6行开始的输出,一次一个屏幕(即作为寻呼机)。在退出more之前,当前命令提示符将一直处于阻塞状态。

现在我按如下方式修改脚本,以便在单独的窗口中显示更多输出。

@echo off
start "" more +5

现在,如果我运行以下命令,则会启动一个新窗口,但不会显示任何输出。

dir C:\Windows | foo

dir命令似乎没有收到foo.cmd命令输出到start的输出。

我可以做些什么来确保将start命令的标准输入中传输的任何数据传递给start调用的程序(在这种情况下为more )?

1 个答案:

答案 0 :(得分:4)

我不认为有可能进入另一个窗口。父窗口中的START命令正在接收管道输入。 START命令忽略输入。您希望新窗口中的MORE命令接收输入。

我认为实现目标的唯一方法是使用临时文件:

@echo off
set "file=%temp%\%~nx0.temp"
findstr "^" >"%file%"
start "" cmd /c more +5 ^<"%file%" ^& del "%file%" ^& pause