Rechercher une chaîne de caractère dans un ou plusieurs fichiers.
La commande
FIND de l’invite de commande peut s’avérer très intéressante si l’on cherche, par exemple l’ensemble de lignes qui contiennent une chaîne de caractères spécifiée.
Le code suivant décrit la commande
FIND et donne sa syntaxe ainsi que quelques exemples de son emploi.
Pour tester :
Enregistrer le code suivant sous le nom :
Compteur_Ligne_Fichier_By_Find.bas ( vous pouvez bien sûr choisir un autre nom !)
Et tester le programme en observant le résultat des lignes 32, 35 et 38 (en supprimant le REM devant)
- Code:
-
rem ============================================================================
rem Compteur_Ligne_Fichier_By_Find.bas
rem ============================================================================
rem Recherche une chaîne de texte dans un ou plusieurs fichiers
rem A l’aide de la commande FIND de l’invite de commande
rem ============================================================================
rem Syntaxe
rem FIND [/V] [/C] [/N] [/I] [/OFF[LINE]] "chaîne" [[lecteur:] [chemin]nom_de_fichier[ ...]]
rem /V Affiche toutes les lignes ne contenant pas la chaîne spécifiée.
rem /C Affiche seulement le nombre de lignes contenant la chaîne.
rem /N Affiche les numéros de ligne avec les lignes affichées.
rem /I Ignore la casse lors de la recherche de la chaîne.
rem /OFF[LINE] Ne pas ignorer les fichiers dont l’attribut hors connexion a été réglé.
rem "chaîne" Spécifie la chaîne de texte à trouver.
rem [lecteur:][chemin]nom_de_fichier Spécifie un ou des fichiers pour la recherche.
rem Sans nom de chemin, FIND recherche le texte entré à l’invite ou redirigé depuis une autre commande.
rem ============================================================================
dim fichier$ : ' Fichier dans lequel on fait la recherche
fichier$ = "Compteur_Ligne_Fichier_By_Find.bas" : ' C'est ce même fichier à adapter
dim chaine$ : ' Chaine de caractères à chercher dans le fichier
chaine$ = "affiche" : ' On cherche la chaîne "affiche"
if file_exists(fichier$) <> 1
message "Fichier : " + fichier$ + " non trouvé ! "
terminate
end_if
Find(chaine$,fichier$)
terminate
rem ============================================================================
SUB Find(chaine$,fichier$)
clipboard_string_copy "" : ' vider le contenu du presse-papier
rem Affiche toutes les lignes ne contenant pas la chaîne spécifiée (sans tenir compte de la casse).
' execute_wait "cmd /c find /v /i" + chr$(34) + chaine$ + chr$(34) + " " +fichier$ + " |clip" + chr$(34)
rem ========================================================================
rem Affiche le nombre de lignes Ne contenant Pas la chaîne spécifiée (sans tenir compte de la casse)
' execute_wait "cmd /c find /v /c /i" + chr$(34) + chaine$ + chr$(34) + " " +fichier$ + " |clip" + chr$(34)
rem ========================================================================
rem Affiche les numéros de ligne avec les lignes contenant la chaîne spécifiée (sans tenir compte de la casse)
execute_wait "cmd /c find /n /i" + chr$(34) + chaine$ + chr$(34) + " " +fichier$ + " |clip" + chr$(34)
rem ========================================================================
message clipboard_string_paste$ : ' Afficher le contenu du presse-papier
END_SUB
rem ============================================================================