我正在更新Crystal编程语言标准库的测试套件以在Windows上运行。为了在UNIX上使用stdout和stdin的管道测试新进程的产生,cat
用作“虚拟进程”,将stdin复制到stdout进行测试。
使用cmd.exe
命令在Windows上实现相同效果的最简单命令是什么?
答案 0 :(得分:0)
这是我的解决方案:
powershell.exe -c "[Console]::OpenStandardInput().CopyTo([Console]::OpenStandardOutput())"
使用 (find /v ""
) 的公认解决方案存在一些问题:
cat
将返回退出代码 0。当输入为空时,测试退出代码并期望它为零的测试将失败。一种解决方法是执行 find /v "" & :
(假设您是从 cmd.exe
运行它,例如使用 cmd.exe /c
) – 但是,如果 find 实际上由于任何原因无法运行(请参阅下一步要点),您将不会收到通知您的失败退出代码find
之前,您的路径中可能有 MSYS/Cygwin/etc find
。 (当然,在这种情况下,您的路径中可能也有 cat
,因此根本不需要这样做 – 但是,您可能正在寻找一种您知道即使在没有MSYS/Cygwin/etc 已安装。)假设您使用 cmd.exe /c
运行它,您可以使用 %windir%\system32\find.exe /v ""
我认为这个 PowerShell oneliner 更好,因为它避免了上述问题。