web-dev-qa-db-fra.com

Comment savoir si un fichier contient une chaîne donnée à l'aide de la ligne de commande Windows

J'essaie de créer un fichier batch (.bat) pour Windows XP pour faire ce qui suit:

If (file.txt contains the string 'searchString') then (ECHO found it!) 
ELSE(ECHO not found)

Jusqu'à présent, j'ai trouvé un moyen de rechercher des chaînes dans un fichier en utilisant la commande FIND qui renvoie la ligne du fichier où il trouve la chaîne, mais suis incapable de faire une vérification conditionnelle à ce sujet.

Par exemple, cela ne fonctionne pas.

IF FIND "searchString" file.txt ECHO found it!

Cela non plus:

IF FIND "searchString" file.txt=='' ECHO not found

Des idées sur la façon dont cela peut être fait?

16
Jai

De l'autre poste:

    find /c "string" file
    if %errorlevel% equ 1 goto notfound
    echo found
    goto done
    :notfound
    echo notfound
    goto done
    :done

Ou quelque chose comme: si pas trouvé, écrivez dans le fichier.

    find /c "%%P" file.txt  || ( echo %%P >> newfile.txt )

Ou quelque chose comme: si trouvé, écrivez dans le fichier.

    find /c "%%P" file.txt  && ( echo %%P >> newfile.txt )

Ou quelque chose comme:

    find /c "%%P" file.txt  && ( echo found ) || ( echo not found )
11
Mike Q

J'ai utilisé une ligne de commande [~ # ~] dos [~ # ~] pour ce faire. Deux lignes, en fait. Le premier à faire du "répertoire courant" le dossier où se trouve le fichier - ou le dossier racine d'un groupe de dossiers où le fichier peut se trouver. La deuxième ligne fait la recherche.

CD C:\TheFolder
C:\TheFolder>FINDSTR /L /S /I /N /C:"TheString" *.PRG

Vous pouvez trouver des détails sur les paramètres sur ce lien .

J'espère que cela aide!