batch-file
Sök strängar i batch
Sök…
Grundläggande strängar sökning
FIND-kommando kan skanna stora filer rad för rad för att hitta en viss sträng. Det stöder inte jokertecken i söksträngen.
find /i "Completed" "%userprofile%\Downloads\*.log" >> %targetdir%\tested.log
TYPE scan2.txt | FIND "Failed" /c && echo Scan failed || echo Scan Succeeded
FINDSTR-kommandot är mer funktionsräckvidd och stöder REGEX-sökning (Regular Expressions) med jokertecken i söksträngen.
FINDSTR /L /C:"Completed" Results.txt
echo %%G | findstr /r /b /c:"[ ]*staff.*" >nul && echo Found!
Se FIND och FINDSTR hjälpkällor för mer information.
Använda sökresultat
Följande skript visar mer avancerad delad filteknik , där FOR-funktionen slingrar genom en lista över filer i en katalog, och varje filinnehåll rörs till FINDSTR som letar efter en sträng som innehåller substring var
föregiven av odefinierat antal utrymmen och ersatt av något extra text. När den har hittats ersätts den sökta filen med en ny som bara innehåller textdelen ovanför söksträngen.
@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
Observera hur inställning break=TRUE
gör det möjligt att lämna FOR-slingan från den sökta filen när den första förekomsten av söksträngen har hittats.