Windows cmd将一个命令的输出作为参数传递给另一个命令

时间:2017-04-05 08:31:46

标签: windows shell cmd pipe command-prompt

在linux中可以这样做:

git diff $(git status -s -b | sed -n '2p' | cut -d' ' -f2-)

或更简单的案例

ls $(pwd) 

问题是如何在Windows中实现相同的目标? (不使用批处理文件,在命令提示符中使用单行程序)。并非所有命令都支持管道,那么我们如何评估一个并将结果作为参数传递给另一个?

我已尝试过管道<>,但都没有用。

git diff < (git status -s -b | sed -n '2p' | cut -d' ' -f2-) 

自己尝试一下它需要一个文件。由于|不支持,git diff无法正常工作

git status -s -b | sed -n '2p' | cut -d' ' -f2- | git diff // results in illegal seek

1 个答案:

答案 0 :(得分:6)

$中没有cmd运算符。
重定向运算符(<>>>)期望文件或流句柄 管道|将命令的标准输出传递到另一个命令的标准输入。

然而,for /F loop能够捕获命令的输出并将其提供给变量引用(示例中为%A);请参阅以下代码:

for /F "usebackq delims=" %A in (`git status -s -b ^| sed -n '2p' ^| cut -d' ' -f2-`) do git diff %A