web-dev-qa-db-fra.com

Pourquoi seule la première ligne de ce fichier batch Windows est exécutée alors que les trois lignes sont exécutées dans un interpréteur de commande?

J'ai un fichier batch qui exécute trois commandes Maven, l'une après l'autre. Chaque commande peut être exécutée avec succès dans le script - par elle-même !. Mais lorsque j'ajoute les trois commandes au même fichier, seule la première s'exécute avant la fin du script. Une idée pourquoi?

mvn install:install-file -DgroupId=gdata -DartifactId=base -Dversion=1.0 -Dfile=gdata-base-1.0.jar  -Dpackaging=jar -DgeneratePom=true
mvn install:install-file -DgroupId=gdata -DartifactId=blogger -Dversion=2.0 -Dfile=gdata-blogger-2.0.jar  -Dpackaging=jar -DgeneratePom=true
mvn install:install-file -DgroupId=gdata -DartifactId=blogger-meta -Dversion=2.0 -Dfile=gdata-blogger-meta-2.0.jar  -Dpackaging=jar -DgeneratePom=true

De plus, si je copie les trois commandes et les colle dans une commande Shell (cmd.exe), elles s'exécutent l'une après l'autre sans problème. C'est donc apparemment un problème avec le fichier de commandes DOS.

161
wiki

Maven utilise des fichiers de commandes pour faire ses affaires. Avec tout script batch, vous devez appeler un autre script à l'aide de la commande call afin qu'il sache revenir à votre script une fois le script appelé terminé. Essayez de ajouter call à toutes les commandes.

Vous pouvez également essayer d’utiliser la commande start qui devrait fonctionner de la même manière.

273
Jeff Mercado

Avoir call aide. Cependant aujourd'hui, ce n'est pas le cas.

Voici comment je l'ai résolu:

contenu du fichier Bat (si vous voulez arrêter lot quand une des erreurs cmds)

cmd1 && ^
cmd2 && ^
cmd3 && ^
cmd4

contenu du fichier Bat (si vous voulez continuer batch quand une des erreurs cmds)

cmd1 & ^
cmd2 & ^
cmd3 & ^
cmd4
21

Pour exécuter plusieurs versions de Maven à partir d'un script, vous devez utiliser la fonction Windows appel de la manière suivante:

call mvn install:install-file -DgroupId=gdata -DartifactId=base -Dversion=1.0 -Dfile=gdata-base-1.0.jar  -Dpackaging=jar -DgeneratePom=true
call mvn install:install-file -DgroupId=gdata -DartifactId=blogger -Dversion=2.0 -Dfile=gdata-blogger-2.0.jar  -Dpackaging=jar -DgeneratePom=true
call mvn install:install-file -DgroupId=gdata -DartifactId=blogger-meta -Dversion=2.0 -Dfile=gdata-blogger-meta-2.0.jar  -Dpackaging=jar -DgeneratePom=true

Il est normal que la commande mvn particulière execs ne soit pas renvoyée, ce qui n'exécute pas le reste des commandes.

1
Alan Haggai Alavi

Essayez d’écrire le fichier de commandes suivant et de l’exécuter:

Echo one
cmd
Echo two
cmd
Echo three
cmd

Seules les deux premières lignes sont exécutées. Mais si vous tapez "exit" à l'invite de commande, les deux lignes suivantes sont traitées. C'est un shell qui en charge un autre.

Pour vous assurer que ce n'est pas ce qui se passe dans votre script, tapez simplement "exit" à la fin de la première commande.

HTH!

0
Dr. belisarius