请参阅保存在名为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
)?
答案 0 :(得分:4)
我不认为有可能进入另一个窗口。父窗口中的START命令正在接收管道输入。 START命令忽略输入。您希望新窗口中的MORE命令接收输入。
我认为实现目标的唯一方法是使用临时文件:
@echo off
set "file=%temp%\%~nx0.temp"
findstr "^" >"%file%"
start "" cmd /c more +5 ^<"%file%" ^& del "%file%" ^& pause