Windows cmd 将一个命令的输出作为参数传递给另一个命令
Windows cmd pass output of one command as parameter to another
在 linux 中可以这样做:
git diff $(git status -s -b | sed -n '2p' | cut -d' ' -f2-)
或更简单的情况
ls $(pwd)
问题是如何在 windows 中实现相同的目标? (不使用批处理文件,命令提示符中的一行)。并非所有命令都支持管道,那么我们如何评估一个命令并将结果作为参数传递给另一个命令呢?
我试过管道和 <
和 >
但 none 工作。
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
在 linux 中可以这样做:
git diff $(git status -s -b | sed -n '2p' | cut -d' ' -f2-)
或更简单的情况
ls $(pwd)
问题是如何在 windows 中实现相同的目标? (不使用批处理文件,命令提示符中的一行)。并非所有命令都支持管道,那么我们如何评估一个命令并将结果作为参数传递给另一个命令呢?
我试过管道和 <
和 >
但 none 工作。
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