J'essaie d'écrire un script Windows cmd pour effectuer plusieurs tâches en série. Cependant, il s'arrête toujours après la première commande du script.
La commande après laquelle il s'arrête est une version maven (je ne sais pas si c'est pertinent).
Comment puis-je le faire continuer et exécuter chaque tâche à tour de rôle s'il vous plaît?
Installer un logiciel ou configurer le registre, etc. est complètement hors de question - cela doit fonctionner sur une installation Windows XP vanille, j'en ai peur.
Idéalement, j'aimerais que le script soit abandonné si l'une des commandes échoue, mais c'est un "bon à avoir", pas essentiel.
Merci.
windows
batch-file
scripting
cmd
Darren Greaves
la source
la source
mvn
est un fichier .bat en lui-même, vous devez donc l'utilisercall
comme danscall mvn install
; normalement, vous n'avez pas besoin de créer un fichier cmd supplémentaire.npm
mises à jour et desprotractor
tests. Je ne pensais pas que cette réponse s'appliquait à moi jusqu'à ce que je réalisenpm
et que ceprotractor
sont des.cmd
fichiers sous Windows.Vous pouvez utiliser le symbole && entre les commandes pour exécuter la deuxième commande uniquement si la première réussit. Plus d'informations ici http://commandwindows.com/command1.htm
la source
start /B /WAIT calc
Je ne sais pas pourquoi la première commande s'arrête. Si vous pouvez le rendre parallèle, vous pouvez essayer quelque chose comme
la source
/K
place de/C
si vous souhaitez que le shell reste ouvert après l'exécution de votre commande.cmd.exe
etstart
,start x.bat1
fera juste .Je viens de faire exactement la même tâche (ish) de créer un script batch pour exécuter des scripts de test maven. Le problème est que l'appel de maven scrips avec mvn clean install ... est lui-même un script et doit donc être fait avec l'appel mvn clean install.
Code qui fonctionnera
Notez plutôt l'utilisation de l'appel. Cela permettra l'utilisation de scripts maven consécutifs dans le fichier de commandes.
la source
L'utilisation de doubles esperluettes exécutera la deuxième commande, uniquement si la première réussit:
Où as, en utilisant une seule esperluette tentera d'exécuter les deux commandes, même si la première échoue:
la source
Si vous utilisez Windows, vous pouvez utiliser la commande suivante.
Conduire:
la source
Je ne connais pas la réponse directe à votre question, mais si vous faites beaucoup de ces scripts, cela pourrait valoir la peine d'apprendre un langage plus puissant comme perl. Des implémentations gratuites existent pour Windows (par exemple activestate, cygwin). J'ai trouvé que cela valait l'effort initial pour mes propres tâches.
Éditer:
Comme suggéré par @Ferruccio, si vous ne pouvez pas installer de logiciel supplémentaire, pensez à vbscript et / ou javascript. Ils sont intégrés à l'hôte de script Windows.
la source
Notez que vous n'avez pas besoin de points-virgules dans les fichiers de commandes. Et la raison pour laquelle vous devez utiliser call est que mvn lui-même est un fichier batch et que les fichiers batch doivent s'appeler avec call, sinon le contrôle ne revient pas à l'appelant.
la source