Найти, есть ли совпадения
@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
Этот пакетный файл добавляет проверку для символа возврата каретки, который необходим для текстовых файлов с символами перевода строки в стиле Windows ( CR LF
). Он также выполняется findstr
в отдельном cmd
процессе с включенным отложенным расширением. Это кажется необходимым, хотя отложенное расширение уже включено.
Наконец, это включает две переменные: line1
и line2
, которые можно редактировать. Это делает файл более читабельным для редактирования в будущем. Вы также можете включить в него те же переменные регулярного выражения, чтобы hell.
они соответствовали hello
и т. Д.
Найти количество совпадений
@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
Заметным отличием здесь является for /f
окружение поиска и set /A results+=1
, которое добавляет 1 к results
переменной для каждого найденного соответствия.