Ligne de commande - fichier de commandes appelant un autre fichier de commandes


13

J'ai un fichier batch qui appelle un autre fichier batch qui existe dans le répertoire PATH (appelant essentiellement un exécutable avec des commutateurs supplémentaires.)

: bar.bat:
foo.bat file1.txt
foo.bat file2.txt
etc.

Dans foo.bat:

foo.exe -t -s %1

bar.bat exécute la première commande mais se ferme immédiatement (c'est-à-dire en travaillant uniquement sur file1.txt ).

Comment puis-je créer ce fichier de commandes pour appeler l'autre fichier de commandes plus d'une fois?

Réponses:


14

Utilisez le mot clé CALL:

call foo.bat file1.txt
call foo.bat file2.txt

1
<copié de la réponse de Duncan Smart, juste pour rester ensemble> En plus de la réponse de @ splattne, utilisez exit / b dans le fichier batch CALLed si vous devez revenir plus tôt.
Brad Bruce

1
Vous pouvez également utiliser goto :eofpour revenir tôt. exit /bn'est généralement nécessaire que si vous avez besoin du code retour.
Joey

Je ne sais pas pourquoi mais je me bats pour que cela fonctionne, j'ai essayé les deux exit /bet goto: eof. Est-il correct d'ajouter la sortie de la batte APPELÉE? call foo.bat > myfile
SSH ce

4

En plus de la réponse de @ splattne, utilisez exit /bdans le CALLfichier batch ed si vous devez revenir plus tôt.


2

Une autre option (pour la compatibilité avec DOS avant la version 3.3 :-)) consiste à appeler le processus de commande avec l'option enfant (/ c) et le nom de l'autre fichier de commandes à traiter. Cela fera également un appel au lieu d'une chaîne, et fonctionnera même sur des machines vraiment anciennes (juste au cas où quelqu'un les traverserait et s'en soucierait). :-)


0

@Écho off

echo WbLegalReport.cmd

je:

cd I: \ CFS \ Batch \ jarDir

écho% CD%

WbLegalReport.cmd

écho% CD%

echo WatchResrAddDeleted.cmd

écho% CD%

WatchRestrAddDeleted.cmd

écho% CD%

Ce que j'essaie de faire ici, c'est d'appeler ces deux fichiers batch dans une séquence.

Impossible de le faire.

Aidez-moi, s'il vous plaît.

En fait, il échoue au niveau du script enfant, car le contrôle ne revient pas au script principal


0

Sanket, n'appelez pas directement le fichier batch. Utilisez la commande "CALL". Voir l'exemple de splattne .

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.