batch-file
Поиск строк в партии
Поиск…
Поиск основных строк
Команда FIND может сканировать большие файлы по очереди, чтобы найти определенную строку. Он не поддерживает подстановочные знаки в строке поиска.
find /i "Completed" "%userprofile%\Downloads\*.log" >> %targetdir%\tested.log
TYPE scan2.txt | FIND "Failed" /c && echo Scan failed || echo Scan Succeeded
Команда FINDSTR - это больше возможностей и поддерживает поиск регулярных выражений (REGEX) с помощью подстановочных знаков в строке поиска.
FINDSTR /L /C:"Completed" Results.txt
echo %%G | findstr /r /b /c:"[ ]*staff.*" >nul && echo Found!
Дополнительную информацию см. В справочных источниках FIND и FINDSTR .
Использование результатов поиска
Следующий сценарий показывает более сложную технику разделенного файла , где функция FOR циклически перебирает список файлов в каталоге, и каждый контент файла передается в FINDSTR, который ищет строку, содержащую подстроку var
предшествует неопределенное количество пробелов и заменяется любым дополнительным текст. После поиска искомый файл заменяется новым, содержащим только текстовую часть над строкой поиска.
@echo off
setlocal enabledelayedexpansion
pushd "%temp%\Test"
for %%G in ("*.txt") do (set "break="
(for /f "tokens=*" %%H in (%%~G) do (
if not defined break (
echo %%H | findstr /r /b /c:"[ ]*var.*" >nul && set break=TRUE || echo %%H )
)) >> %%~nG_mod.txt
del %%~G & ren %%~nG_mod.txt %%G )
popd
exit /b
Обратите внимание, как параметр break=TRUE
позволяет выйти из цикла FOR из искомого файла, как только будет найдено первое вхождение поисковой строки.