batch-file
Cerca stringhe in batch
Ricerca…
Ricerca di stringhe di base
Il comando FIND può scansionare file di grandi dimensioni riga per riga per trovare una determinata stringa. Non supporta i caratteri jolly nella stringa di ricerca.
find /i "Completed" "%userprofile%\Downloads\*.log" >> %targetdir%\tested.log
TYPE scan2.txt | FIND "Failed" /c && echo Scan failed || echo Scan Succeeded
Il comando FINDSTR ha più funzioni disponibili e supporta la ricerca di espressioni regolari (REGEX) con caratteri jolly nella stringa di ricerca.
FINDSTR /L /C:"Completed" Results.txt
echo %%G | findstr /r /b /c:"[ ]*staff.*" >nul && echo Found!
Vedi le fonti di aiuto FIND e FINDSTR per maggiori informazioni.
Utilizzando i risultati di ricerca
Lo script seguente mostra una tecnica di file diviso più avanzata, in cui la funzione FOR scorre un elenco di file in una directory e ogni contenuto del file viene convogliato in FINDSTR che cerca una stringa contenente una sottostringa var
preceduta da un numero indefinito di spazi e sostituita da qualsiasi altro testo. Una volta trovato, il file cercato viene sostituito con uno nuovo che contiene solo la porzione di testo sopra la stringa di ricerca.
@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
Nota, come l' break=TRUE
impostazione break=TRUE
consente di uscire dal ciclo FOR dal ciclo cercato, una volta trovata la prima occorrenza della stringa di ricerca.