J'ai un fichier batch,
bat1.bat
bat2.bat
mais ça s'arrête à la fin de la bat1
des indices?
Utilisez call
:
call bat1.cmd
call bat2.cmd
Par défaut, lorsque vous exécutez un fichier de commandes à partir d'un autre contrôleur, celui-ci ne sera pas renvoyé. C'est pourquoi vous devez utiliser call
.
En gros, si vous avez un lot comme celui-ci:
@echo off
echo Foo
batch2.cmd
echo Bar
alors il ne sortira que
Foo
Si vous écrivez comme
@echo off
echo Foo
call batch2.cmd
echo Bar
cependant, il va sortir
Foo
Bar
car après la fin de batch2
, le contrôle du programme est retransféré dans votre fichier de commandes d'origine.
Cela peut arriver si bat1.bat s’arrête de façon anormale (autre que de s’exécuter jusqu’à la fin, comme si on appelait exit) et que vous pouvez contourner ce problème en utilisant un nouveau cmd.exe pour exécuter chaque fichier bat:
start /b /wait bat1.bat
start /b /wait bat2.bat
Vous pouvez l'omettre pour le dernier si les commandes ne suivent pas dans votre fichier bat.
Si vous souhaitez exécuter les fichiers de commandes en séquence, vous devez mettre "démarrer bat 1.bat" à la fin de chaque fichier.
Pour pouvoir exécuter plusieurs fichiers .exe simultanément, vous devez tout d'abord créer un fichier .bat, puis ajouter tous vos fichiers .exe comme indiqué ci-dessous:
D:\Data\Feed.exe Books.xml
D:\Data\Feed.exe Mobile.xml
D:\Data\Feed.exe Clothes.xml
Et puis enregistrez en tant que quelque chose.bat puis lancez-le avec cmd.
Quelque chose d'autre à rechercher:
J'ai eu un problème similaire dans lequel j'appelais plusieurs fichiers de commandes à l'aide de la commande call
, mais le contrôle n'a pas été renvoyé dans le fichier .bat d'origine.
J'ai découvert que j'avais une commande exit
à la fin du fichier de commandes qui fermait la fenêtre DOS avant de revenir au fichier .bat
d'origine et d'y terminer les commandes.