Finden Sie heraus, ob es Übereinstimmungen gibt
@echo off setlocal enableDelayedExpansion set file=test.txt set line1=hello set line2=there set LF=^ :: The above 2 blank lines MUST be preserved! :: Define a CR variable as a CarriageReturn (0x0D) character for /f %%a in ('copy /Z "%~dpf0" nul') do set "CR=%%a" cmd /v:on /c^"findstr /rc:"%line1%^!CR^!*^!LF^!%line2%" %file%^" >nul if %errorlevel%==0 echo found at least 1! pause
Diese Batchdatei fügt eine Prüfung auf das Wagenrücklaufzeichen hinzu, das für Textdateien mit Zeilenumbrüchen im Windows-Stil ( CR LF
) erforderlich ist . Es wird auch findstr
in einem separaten cmd
Prozess mit aktivierter verzögerter Erweiterung ausgeführt. Dies scheint notwendig zu sein, obwohl die verzögerte Erweiterung bereits aktiviert ist.
Zuletzt enthält dies zwei Variablen: line1
und line2
, die bearbeitet werden können. Dadurch ist die Datei für die spätere Bearbeitung lesbarer. Sie können auch die gleichen Variablen für reguläre Ausdrücke in diese einschließen, hell.
würden also übereinstimmen hello
usw.
Finden Sie die Anzahl der Treffer
@echo off setlocal enableDelayedExpansion set file=test.txt set line1=hell. set line2=there set LF=^ :: The above 2 blank lines MUST be preserved! :: Define a CR variable as a CarriageReturn (0x0D) character for /f %%a in ('copy /Z "%~dpf0" nul') do set "CR=%%a" set results=0 for /f %%a in ('cmd /v:on /c^"findstr /rc:"%line1%^!LF^!%line2%" %file%^"') do set /A results+=1 echo found %results%! pause
Der bemerkenswerte Unterschied hier ist die for /f
Umgebung der Suche und set /A results+=1
, die results
für jede gefundene Übereinstimmung 1 zur Variablen hinzufügt .