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.



Modified text is an extract of the original Stack Overflow Documentation
Sous licence CC BY-SA 3.0
Non affilié à Stack Overflow