运行两个与管道连接的命令
PS> cmdA | cmbB
e.g.
1) in powershell
PS> ls -Recurse | more
2) in CMD.exe
C:\> dir /s | more
你在powershell中发现cmd在cmdA完成后开始运行,这种行为与CMD.exe相比有所不同,这两个命令有望同时作为生产者 - 消费者工作。特别是当第一个消息输出很多时,你想要在第一次查看结果而不是在完成第一个cmd之后查看结果。
[2016/08/09更新] 经过几次调查,我猜问题是因为管道运营商' |'工作不同。这次我通过复制和粘贴(~50MB)创建了一个巨大的文本文件,并为CMD和Powershell使用了相同的命令行:
C:\tools\msys2\usr\bin\cat.exe .\WindowsUpdate.log | C:\tools\msys2\usr\bin\cat.exe
我使用msys2中的cat命令并避免使用`type'命令,因为它们在两个炮弹上都不同。
在CMD中,消息立即打印,但在Powershell中,我等待约30秒才能看到消息。我尝试了大约10次,得到了相同的结果。 (PS:我没有使用SSD)。但是如果在Powershell中我将接收器从'cat'对于Out-Host,它工作正常。