我在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机器上执行此操作。
提前致谢!
答案 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