batch-file
Szukaj ciągów w partii
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.