管道输出到批处理脚本

use*_*r42 3 pipe batch-file

我在Windows上使用grep来过滤文件,并希望将输出传递给另一个批处理脚本.

例如

grep "foo" bar.txt | mybatch.bat
Run Code Online (Sandbox Code Playgroud)

在mybatch我想处理每个匹配的行

例如mybatch.bat:

echo Line with foo: %1
Run Code Online (Sandbox Code Playgroud)

在linux上我可以解决这个问题

grep "foo" bar.txt | while read x; do mybatch.sh $x; done
Run Code Online (Sandbox Code Playgroud)

但不知道我怎么能在Windows机器上做到这一点.

提前致谢!

Joe*_*oey 5

你可以使用for:

for /f %x in ('grep "foo" bar.txt') do call mybatch.cmd "%x"
Run Code Online (Sandbox Code Playgroud)

这将为每个非空行调用一次批处理文件,就像shell脚本示例一样.