Lancer des .bat depuis un .bat mais...
oli_a42
Messages postés
11
Date d'inscription
Statut
Membre
Dernière intervention
-
dg_belmontet Messages postés 320 Date d'inscription Statut Membre Dernière intervention -
dg_belmontet Messages postés 320 Date d'inscription Statut Membre Dernière intervention -
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
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:
- Lancer des .bat depuis un .bat mais...
- Creer un fichier .bat - Guide
- Bat to exe converter - Télécharger - Édition & Programmation
- Lancer une application au démarrage windows 10 - Guide
- Lancer un exe en cmd ✓ - Forum Windows
- .Txt to .bat ✓ - Forum Logiciels
2 réponses
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.
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.
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.
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.
Je vais continuer mes recherches mais je crains qu'il n'y ait pas une solution simple.
Merci encore
Bonne journée
Oli_a42