web-dev-qa-db-fra.com

Comment appeler un fichier de commandes après l'autre

J'ai un fichier batch que je teste, tout ce que je veux faire est le suivant

CALL ping.bat

Ensuite, une fois ce fichier de traitement exécuté, je souhaite exécuter un autre fichier:

CALL ping2.bat

En ce moment, j'ai ces deux lignes côte à côte dans un fichier batch. Le premier fichier batch se déclenchera avec succès, mais pas la seconde. Aucune suggestion?

CALL ping.bat
CALL ping2.bat

Ping .bat est juste:

ping 127.0.0.1    
28
Wii

Vérifiez que vous n'avez pas exit quelque part dans le premier lot. Certaines personnes l'utilisent habituellement pour sortir d'un fichier batch, ce qui n'est pas le bon moyen de sortir d'un lot (exit /b ou goto :eof l'est).

Une autre option consiste à appeler un autre lot dans le premier sans call.

18
Joey

Il se peut que votre ping.bat s’appelle simplement tout seul, si son contenu est simplement ping 127.0.0.1, comme vous le dites.

J'ajouterais .exe après ping pour en être sûr.

Comme le suggère jeb à juste titre, le choix d’un nom différent pour votre fichier de commandes est une solution encore meilleure.

6
Andriy M

Supposons que vous avez 3 fichiers de commandes. 

  1. ping1.bat qui a le contenu ping 127.0.0.1 
  2. ping2.bat qui a le contenu ping 127.0.0.1 
  3. ping3.bat qui a les deux lignes ci-dessous
    appelez ping1.bat
    appelez ping2.bat 

Si vous avez les trois fichiers de commandes dans un seul dossier (disons sous C:\NewFolder) Si vous double-cliquez sur ping3.bat, vous n'obtiendrez certainement aucune erreur.

Remarque: Si vous ne souhaitez pas attendre la fin de la première commande, utilisez le mot-clé start, qui lance le processus et passe à la ligne suivante du fichier de commandes, tandis que l'appel une fois le processus en cours terminé, start autorise le parallélisme)
Pour le faire en parallèle, utilisez les deux lignes de code ci-dessous dans le ping3.bat: 

démarrer ping1.bat
démarrer ping2.bat 

5
knkarthick24

n'appelez pas le fichier que vous appelez du lot avec le même nom que la commande que vous essayez d'appeler ... renommé gnip.bat et fonctionne correctement

2
Wii

Vous ne savez pas exactement ce que vous vouliez faire ici, mais je suppose que vous vouliez faire ceci:

  1. lancer FIRST.bat
  2. à partir de FIRST.bat vous souhaitez appeler SECOND.bat
  3. Pendant l'exécution de SECOND.bat, FIRST.bat doit rester en pause
  4. Après l'exécution de SECOND.bat, FIRST.bat doit reprendre et appeler THIRD.bat.

Dans ce cas, à partir de votre fichier de commandes actuel, vous devez démarrer ping.bat et ping2.bat comme suit:

::some code here
start /wait ping.bat
start /wait ping2.bat
::some code here

Ensuite, dans ping.bat et ping2.bat, la dernière ligne doit être exit. Leur code devrait ressembler à ceci:

::some code here, might be ping 127.0.0.1
exit

Alors maintenant, votre fichier de commandes réel va commencer ping.bat et attendra qu'il se termine (exit). Une fois que ping.bat se ferme, votre fichier de commandes actuel passera à la ligne suivante et démarrera ping2.bat, etc.

2
Goran Vasic

La commande ping agit différemment sur différents systèmes d'exploitation. Essayez de forcer la commande ping à s’arrêter après quelques requêtes d’écho avec un commutateur -n.

ping -n 4 127.0.0.1

0
Derek Nutile