的Windows CMD传递一个命令的输出作为参数传递给另一个
问题描述:
在linux下,可以做T这样的:的Windows CMD传递一个命令的输出作为参数传递给另一个
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
答
有一个在cmd
没有$
运营商。
重定向操作符(<
,>
,>>
)预计文件或流句柄。 |
通过标准输出的命令转换成另一种一个的标准输入的管。
A for /F
loop但能够捕获命令的输出并将其提供给变量引用(示例中的%A
);请参阅以下代码:
for /F "usebackq delims=" %A in (`git status -s -b ^| sed -n '2p' ^| cut -d' ' -f2-`) do git diff %A
+0
这正是我所期待的。更新'for for/F“usebackq delims =”%A in(\'git status -s -b^| sed -n'$ 1p'^ | cut -d“”-f3 \')do git diff%A $ 2 $ 3 $ 4'($ n是这个别名的命令行参数),它会根据'git status'输出的数字来区分正确的文件 – Arijoon
在Windows中使用双引号而不是单引号(如在Linux上)。 – user2956477
尝试使用'^'转义管道,即'-s -b^| sed' –