[Batch] Chercher dans plusieurs dossiers chaine de caractère dans fichier [Résolu]

Signaler
Messages postés
13
Date d'inscription
mardi 6 juin 2017
Statut
Membre
Dernière intervention
22 juillet 2021
-
Messages postés
13
Date d'inscription
mardi 6 juin 2017
Statut
Membre
Dernière intervention
22 juillet 2021
-
Bonjour,

J'aimerais savoir si vous pourriez m'aider.

Le but de mon programme est de récupérer des fichiers images présents dans un dossier dont je ne connais pas le nom.
Dans ce dossier, il y a un fichier qui contient une chaîne de caractère me permettant de retrouver le bon dossier parmi plusieurs répertoires.

Je cherche donc à concevoir un petit programme qui pourrait rechercher dans différents dossiers (de nom aléatoire) un fichier "txt" qui contient une chaîne de caractère (TOTO) puis j'aimerais ensuite récupérer le chemin qui mène au fichier.

Exemple :

Voici les différents fichiers :

C:\Test\ABC005\ex.txt (Contiens ligne 25 : abv)
C:\Test\ABC001\xe.txt (Contiens ligne 25 : abn)
C:\Test\ABC008\ab.txt (Contiens ligne 25 : TOTO)

J'aimerais exécuter le programme en batch pour récupérer le chemin "C:\Test\ABC008" afin de pouvoir par la suite copier les images dans un autre répertoire.

Cordialement,
DUBOIS Nicolas

2 réponses

Messages postés
13618
Date d'inscription
lundi 2 mars 2009
Statut
Contributeur
Dernière intervention
28 juillet 2021
4 491
Bonjour,

Tu peux essayer quelque chose comme ça :
for /f "delims=" %%A in ('2^>nul dir /b /s C:\Test\*.txt') do (
findstr /C:"TOTO" "%%~A" >nul && echo %%~dpA
)
pause
exit



“L'intelligence artificielle se définit comme le contraire de la bêtise naturelle.”
Messages postés
13
Date d'inscription
mardi 6 juin 2017
Statut
Membre
Dernière intervention
22 juillet 2021

Génial !
Cela à fonctionné, je vous remercie :)
Messages postés
1
Date d'inscription
lundi 12 juillet 2021
Statut
Membre
Dernière intervention
15 juillet 2021

Bonjour,

Peut-être regarder vers du findstr :
Juste remplacer le path pour le coup.
Le path sera indiqué dans le "Resultats.txt" sur le bureau


set /P chaine= information a chercher :
findstr "%chaine%" path\*.txt > C:\Users\%username%\Desktop\Resultats.txt
pause


Cordialement,
Messages postés
13
Date d'inscription
mardi 6 juin 2017
Statut
Membre
Dernière intervention
22 juillet 2021

Effectivement, il faut utiliser findstr avec FOR !
Merci de votre aide !