Lancer des .bat depuis un .bat mais...

Fermé
oli_a42 Messages postés 11 Date d'inscription dimanche 6 juin 2010 Statut Membre Dernière intervention 10 août 2012 - 3 avril 2011 à 23:30
dg_belmontet Messages postés 313 Date d'inscription mercredi 30 mars 2011 Statut Membre Dernière intervention 8 juin 2016 - 4 avril 2011 à 16:26
Salut à tous,

J'ai besoin de votre aide !!

Je souhaiterais récupérer les .bat de mes sous répertoires et les exécuter.

J'ai donc fait :

FOR /F %%A IN ('DIR /B /S *.bat') do call %%A

Le problème c'est que je rentre dans une boucle infini, ce qui est normal puisque en faisant DIR etc. je récupère mon bat principal et je l'exécute (et celui ci se rappel donc lui même et ainsi de suite ...).

Il faudrait donc que j'arrive à récupérer tous mes bat sauf le principal, et c'est là que je sèche...

En espérant avoir été clair

Je vous remercie de votre aide

Bonne soirée

Oli_a42

A voir également:

2 réponses

dg_belmontet Messages postés 313 Date d'inscription mercredi 30 mars 2011 Statut Membre Dernière intervention 8 juin 2016 128
3 avril 2011 à 23:53
Bonsoir,

Un des moyens le plus simple est de mettre votre fichier .bat principal sur une autre partition du disque dur ou encore sur un support externe comme une clé USB (ou disquette si elle existe encore) et dans votre commande vous définissez l'endroit ciblé des fichiers .bat :


FOR /F %%A IN ('DIR /B /S C:\*.bat') do call %%A

Bon courage.
0
Merci pour votre réponse, mais je souhaite être le plus générique possible et ne pas imposer de chemin (absolu) pour la commande DIR. Je ne souhaite exécuter que les .bat qui sont dans les sous répertoires du bat principal.
Je vais continuer mes recherches mais je crains qu'il n'y ait pas une solution simple.
Merci encore

Bonne journée

Oli_a42
0
dg_belmontet Messages postés 313 Date d'inscription mercredi 30 mars 2011 Statut Membre Dernière intervention 8 juin 2016 128
4 avril 2011 à 16:26
Bonjour Oli_a42,

Votre petit problème me tient à coeur et d'après mes souvenirs de syntaxe de batch voici 2 solutions :

1) La plus simple...
Si vous ne voulez traiter que des fichiers .bat, il suffit que votre batch principal ait l'extension .cmd (c'est toujours un batch) et de cette façon il ne sera pas pris en compte dans la commande DIR (donc pas de boucle infinie).



2) La 2ème solution, la plus professionnelle.... mais plus complexe
Il suffit de faire une exclusion du nom de votre batch "Principal" dans un fichier qui comprendra le résultat de la commande DIR. Voici un exemple que j'ai testé et qui fonctionne :

@Echo Off
Rem Définir dans la variable "File" le nom du script principal qui ne doit pas être traité
Set File=Principal.bat

Rem On récupère le résultat de la commande DIR dans le fichier result.txt
Rem et on supprime la ligne correspondant au nom du script Principal.bat
Dir /b /s *.bat | findstr /I /V "%file%" > result.txt

If not exist result.txt Goto Error

Rem Boucle FOR pour appeler tous les .bat contenus dans le fichier Result.txt
FOR /F %%A IN (result.txt) do call %%A
Goto FIN

:Error
Cls
Echo.
Echo.
Echo Erreur: Impossible de créer le fichier Result.txt ou aucun Batch...!!!
Echo.

:FIN
Set File=
If exist Result.txt Del Result.txt > nul

*************************************************

Cette fois-ci cela devrait fonctionner mais attention à la syntaxe.

Bon courage et dites-moi si cela vous convient.
0