Поиск…


Поиск основных строк

Команда 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 из искомого файла, как только будет найдено первое вхождение поисковой строки.



Modified text is an extract of the original Stack Overflow Documentation
Лицензировано согласно CC BY-SA 3.0
Не связан с Stack Overflow