2

我试图弄清楚如何利用 findstr 以便它会做与 awk 中的这一行相同的事情:

wk.exe "begin {temp=0}/^stringMarker/{temp=1}{if (temp==1)print$0}" %TEMP%\input.txt >%TEMP%\output.txt

这就是我现在能想到的:

@ECHO OFF
findstr /b /c:"Hello" Hello.bat > nul
if errorlevel 1 (
echo Search Failed
) else (
echo Search Sucessful
)

如您所见,缺少后半部分代码。我需要帮助来了解如何获取 stringMarker 之后的行,然后能够将它们重定向到文件中。

干杯

4

1 回答 1

0

如果可能,我建议使用 gawk 的 Windows 端口。如果由于某种原因你不能,也许 vbscript 效果最好?

如果您必须使用 findstr 和 cmd,以下应该可以工作。

find_thing.cmd "^stringMarket" in.txt > out.txt

find_thing.cmd

@echo off

if "%~1"=="" ((echo no arguments) && exit /b)
if "%~2"=="" ((echo insufficient arguments) && exit /b)

set query=%~1
set file_name=%~2

for /f "tokens=1,2* delims=:" %%a in ('findstr /r /n "%query%" "%file_name%"') do (
    echo %%b
    more +%%a "%file_name%"
    exit /b
)
于 2012-11-11T20:46:02.667 回答