管道输出到批处理脚本

时间:2013-03-05 14:00:14

标签: batch-file pipe

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

e.g。

grep "foo" bar.txt | mybatch.bat

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

e.g。 mybatch.bat:

echo Line with foo: %1
在Linux上

我可以通过

解决这个问题
grep "foo" bar.txt | while read x; do mybatch.sh $x; done

但不知道如何在Windows机器上执行此操作。

提前致谢!

2 个答案:

答案 0 :(得分:5)

您可以使用for

for /f %x in ('grep "foo" bar.txt') do call mybatch.cmd "%x"

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

答案 1 :(得分:0)

这是交易的诀窍:

head.bat

@echo off

setlocal ENABLEDELAYEDEXPANSION
set n=%1

for /F "tokens=*" %%x in ('more') do (
echo %%x
set /A n -= 1
if !n! EQU 0 exit /b
)

使用它:

REM print the first 10 lines:
type test.txt | head 10