7
votes

Appeler un fichier .bat à partir d'un autre fichier .bat

J'ai un fichier .bat auquel je peux passer des paramètres. xxx

brièvement, il exécute un SQL pour charger la table1 sur l'environnement DEV. Maintenant, je veux que cela charger plusieurs tables du jour au lendemain. Donc, j'ai mis en place un maître .bat qui va quelque chose comme xxx

si je soumets master_load.bat à partir de cmd, il exécute la charge de la table1 mais ne marche pas à la charge de la table2 . Ce sont les deux dernières lignes du wrapper.bat xxx


0 commentaires

4 Réponses :


0
votes

Vous devez utiliser la commande de démarrage afin de résoudre ce problème. L'appel rend le processus actuel exécuter les commandes. Vous pouvez en apprendre davantage sur Démarrer ici. La mise en œuvre de base doit être la suivante:

"START program-name arg1 arg2"`


0 commentaires

0
votes

Y a-t-il un problème dans l'exécution de Call Loader_table_wrapper.bat Table1 Dev? Quel est le résultat lorsque vous écho entre les appels?


0 commentaires

6
votes

Votre sortie% error_status% commande dans load_table_wrapper.bat est terminant votre session de lot, donc votre maître_load.bat n'a jamais eu la possibilité de reprendre avec l'appel suivant.

Vous pouvez corriger le problème. simplement en ajoutant l'option / B de la commande de sortie xxx

i, je n'utilise presque jamais la sortie sans / b dans un fichier de commandes (bien qu'il y ait des moments où / b n'est pas recherché) .

mais une autre alternative consiste à exécuter les scripts appelés via cmd au lieu de l'appel. xxx

Il existe un certain nombre de différences entre les méthodes

appel avec sortie / b

  • comparativement rapide
  • peut conserver des valeurs variables d'environnement lors de son retour (SetLocal est disponible si vous ne souhaitez pas préserver les valeurs)
  • appelé script hérite des états d'expansion et d'extension retardés (activés ou désactivés)

    cmd / c

    • comparativement lent
    • ne peut pas préserver les valeurs variables d'environnement lors de leur retour. (Vous pouvez écrire les définitions à un fichier et les charger au retour au maître, mais ce n'est pas pratique ou efficace)
    • appelé script commence toujours par défaut des états d'expansion et d'extension retardés par défaut (une expansion normalement retardée est désactivée et les extensions sont activées)

      Je ne recommanderais jamais d'utiliser CMD / C sur appel, à moins que les fichiers par lots appelés n'ont quitté l'option / B et vous ne pouvez pas modifier le fichier de commandes pour ajouter l'option / B. >


0 commentaires

-1
votes

essayer de donner une commande de pause, comme ceci:

appel load_table_wrapper.bat table1 dev PAUSE Call Load_Table_wrapper.bat Table2 Dev PAUSE Call Loader_table_wrapper.bat Table3 dev


0 commentaires