Szukaj…


Podstawowe wyszukiwanie ciągów

Polecenie FIND może skanować duże pliki wiersz po wierszu, aby znaleźć określony ciąg. Nie obsługuje symboli wieloznacznych w ciągu wyszukiwania.

find /i "Completed" "%userprofile%\Downloads\*.log" >> %targetdir%\tested.log

TYPE scan2.txt | FIND "Failed" /c && echo Scan failed || echo Scan Succeeded

Polecenie FINDSTR ma większy zasięg funkcji i obsługuje wyszukiwanie wyrażeń regularnych (REGEX) za pomocą symboli wieloznacznych w ciągu wyszukiwania.

FINDSTR /L /C:"Completed" Results.txt

echo %%G | findstr /r /b /c:"[ ]*staff.*" >nul && echo Found!

Więcej informacji można znaleźć w źródłach pomocy FIND i FINDSTR .

Korzystanie z wyników wyszukiwania

Poniższy skrypt pokazuje bardziej zaawansowaną technikę podziału plików , w której funkcja FOR przechodzi przez listę plików w katalogu, a zawartość każdego pliku jest przesyłana do FINDSTR, który wyszukuje ciąg zawierający podłańcuch var poprzedzony nieokreśloną liczbą spacji i zastępowany dowolnymi dodatkowymi tekst. Po znalezieniu szukany plik jest zastępowany nowym, który zawiera tylko część tekstową powyżej ciągu wyszukiwania.

@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

Zauważ, jak ustawienie break=TRUE pozwala wyjść z pętli FOR z wyszukiwanego pliku, gdy zostanie znalezione 1. wystąpienie ciągu wyszukiwania.



Modified text is an extract of the original Stack Overflow Documentation
Licencjonowany na podstawie CC BY-SA 3.0
Nie związany z Stack Overflow