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

Fallentree 2016 Messages postés mercredi 25 février 2009Date d'inscription 23 janvier 2018 Dernière intervention - 30 déc. 2017 à 23:32 - Dernière réponse : barnabe0057 11770 Messages postés lundi 2 mars 2009Date d'inscriptionContributeurStatut 22 janvier 2018 Dernière intervention
- 31 déc. 2017 à 14:34
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
Afficher la suite 

23 réponses

Répondre au sujet
barnabe0057 11770 Messages postés lundi 2 mars 2009Date d'inscriptionContributeurStatut 22 janvier 2018 Dernière intervention - Modifié par barnabe0057 le 31/12/2017 à 00:02
0
Utile
22
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.”
barnabe0057 11770 Messages postés lundi 2 mars 2009Date d'inscriptionContributeurStatut 22 janvier 2018 Dernière intervention > Fallentree 2016 Messages postés mercredi 25 février 2009Date d'inscription 23 janvier 2018 Dernière intervention - 31 déc. 2017 à 02:20
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
Fallentree 2016 Messages postés mercredi 25 février 2009Date d'inscription 23 janvier 2018 Dernière intervention - 31 déc. 2017 à 02:28
Je tenais à avoir le chemin au cas où d'où le /D
Pourquoi un for ????
barnabe0057 11770 Messages postés lundi 2 mars 2009Date d'inscriptionContributeurStatut 22 janvier 2018 Dernière intervention > Fallentree 2016 Messages postés mercredi 25 février 2009Date d'inscription 23 janvier 2018 Dernière intervention - 31 déc. 2017 à 02:30
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
Fallentree 2016 Messages postés mercredi 25 février 2009Date d'inscription 23 janvier 2018 Dernière intervention - 31 déc. 2017 à 11:29
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.
barnabe0057 11770 Messages postés lundi 2 mars 2009Date d'inscriptionContributeurStatut 22 janvier 2018 Dernière intervention > Fallentree 2016 Messages postés mercredi 25 février 2009Date d'inscription 23 janvier 2018 Dernière intervention - 31 déc. 2017 à 14:34
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
Commenter la réponse de barnabe0057