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.



Modified text is an extract of the original Stack Overflow Documentation
Licensierat under CC BY-SA 3.0
Inte anslutet till Stack Overflow