batch-file
Rechercher des chaînes dans un lot
Recherche…
Recherche de chaînes de base
La commande FIND peut analyser des fichiers volumineux ligne par ligne pour trouver une chaîne donnée. Il ne prend pas en charge les caractères génériques dans la chaîne de recherche.
find /i "Completed" "%userprofile%\Downloads\*.log" >> %targetdir%\tested.log
TYPE scan2.txt | FIND "Failed" /c && echo Scan failed || echo Scan Succeeded
La commande FINDSTR a plus de fonctionnalités et prend en charge la recherche par expressions régulières (REGEX) avec des caractères génériques dans la chaîne de recherche.
FINDSTR /L /C:"Completed" Results.txt
echo %%G | findstr /r /b /c:"[ ]*staff.*" >nul && echo Found!
Voir les sources d'aide FIND et FINDSTR pour plus d'informations.
Utilisation des résultats de recherche
Le script suivant montre une technique de fichiers fractionnés plus avancée, où la fonction FORF parcourt une liste de fichiers dans un répertoire, et chaque contenu de fichier est redirigé vers FINDSTR qui recherche une chaîne contenant une sous-chaîne var
précédée d'un nombre indéfini d'espaces. texte. Une fois trouvé, le fichier recherché est remplacé par un nouveau fichier contenant uniquement la partie texte au-dessus de la chaîne de recherche.
@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
Notez que la définition de break=TRUE
permet de quitter la boucle FOR à partir du fichier recherché, une fois que la première occurrence de la chaîne de recherche est trouvée.