"if exist" d'un file sur une arborescence. [Résolu/Fermé]

Signaler
Messages postés
2295
Date d'inscription
mercredi 25 février 2009
Statut
Membre
Dernière intervention
22 juillet 2019
-
Messages postés
13547
Date d'inscription
lundi 2 mars 2009
Statut
Contributeur
Dernière intervention
22 juin 2021
-
Bonjour,

Je me demandais s'il n'y avais pas plus simple de faire un dir/s puis rechercher le fichier concerné ....
dir /S/D | find "toto.txt" 

sous cmd ca fonctionne mais en .bat c'est une autre histoire
dir /S/D ^| find "toto.txt" 
if %errorlevel% equ 1 echo fichier trouvé.

dir /S/D | find "toto.txt" > null && echo n'existe pas.

Une idée?
Au fait les 2 derniers codes ne fonctionnebt pas.
Merci de votre lecture

1 réponse

Messages postés
13547
Date d'inscription
lundi 2 mars 2009
Statut
Contributeur
Dernière intervention
22 juin 2021
4 410
Bonsoir,

Le ^ pour échapper | n'est utile que dans une boucle FOR, un exemple :

for /f %%A in ('dir /S ^| find "toto.txt"') do (


Petite remarque concernant tes commandes : j'ai remarqué que tu inversais les codes retours.

Pour vérifier la bonne exécution d'une commande tu peux utiliser && ou bien tester si %ERRORLEVEL% est à 0.

Pour vérifier la mauvaise exécution d'une commande tu peux utiliser || ou bien tester si %ERRORLEVEL% est à 1.



“L'intelligence artificielle se définit comme le contraire de la bêtise naturelle.”
Messages postés
13547
Date d'inscription
lundi 2 mars 2009
Statut
Contributeur
Dernière intervention
22 juin 2021
4 410 >
Messages postés
2295
Date d'inscription
mercredi 25 février 2009
Statut
Membre
Dernière intervention
22 juillet 2019

Voilà le raccourci :
for /f "delims=" %%W in ('dir "%chemin%\*.mp3" /S/B ^| find /V "!nom!.mp3"') do (call :conversion)

:conversion
...
...
...
goto :eof

Si tu veux faire l'inverse, tu supprimes le commutateur /V de la commande FIND
Messages postés
2295
Date d'inscription
mercredi 25 février 2009
Statut
Membre
Dernière intervention
22 juillet 2019
196
Je tenais à avoir le chemin au cas où d'où le /D
Pourquoi un for ????
Messages postés
13547
Date d'inscription
lundi 2 mars 2009
Statut
Contributeur
Dernière intervention
22 juin 2021
4 410 >
Messages postés
2295
Date d'inscription
mercredi 25 février 2009
Statut
Membre
Dernière intervention
22 juillet 2019

Le /D ne sert pas à avoir le chemin, par contre le /S affiche obligatoirement le chemin complet

Le FOR te permet d'exercer l'action de ton choix sur chaque fichier renvoyé par la commande DIR
Messages postés
2295
Date d'inscription
mercredi 25 février 2009
Statut
Membre
Dernière intervention
22 juillet 2019
196
C'est comme ça. Pour faire une action, c'est un for.
Mais si il existe plus qu'un fichier renvoyé par for, il boucle en conséquence ...
C'n'est pas cool.
Faut que j'essaie.
Messages postés
13547
Date d'inscription
lundi 2 mars 2009
Statut
Contributeur
Dernière intervention
22 juin 2021
4 410 >
Messages postés
2295
Date d'inscription
mercredi 25 février 2009
Statut
Membre
Dernière intervention
22 juillet 2019

La commande DIR se contente de lister des fichiers/dossiers, si tu veux pouvoir agir sur cette liste il faut passer par un FOR /F