Estoy tratando de escribir un script de cmd de Windows para realizar varias tareas en serie. Sin embargo, siempre se detiene después del primer comando en el script.
El comando que detiene después es una construcción maven (no estoy seguro de si eso es relevante).
¿Cómo hago que continúe y ejecute cada tarea por turno, por favor?
La instalación de cualquier software o la configuración del registro, etc., está completamente fuera de cuestión: me temo que tiene que funcionar en una instalación de Windows XP estándar.
Idealmente, me gustaría que el script se cancelara si alguno de los comandos fallara, pero eso es "bueno", no esencial.
Gracias.
windows
batch-file
scripting
cmd
Grebas de Darren
fuente
fuente
mvn
es un archivo .bat en sí mismo, por lo que debe usarlocall
como encall mvn install
; normalmente no necesita crear un archivo cmd adicional.npm
actualizaciones yprotractor
pruebas. No pensé que esta respuesta se aplicara a mí hasta que me di cuentanpm
yprotractor
son.cmd
archivos en Windows.Puede usar el símbolo && entre comandos para ejecutar el segundo comando solo si el primero tiene éxito. Más información aquí http://commandwindows.com/command1.htm
fuente
start /B /WAIT calc
No estoy seguro de por qué se detiene el primer comando. Si puede hacerlo paralelo, puede intentar algo como
fuente
/K
lugar de/C
si desea que el shell permanezca abierto después de que se haya ejecutado su comando.cmd.exe
ystart
, solostart x.bat1
lo hará.Acabo de hacer exactamente la misma tarea (ish) de crear un script por lotes para ejecutar scripts de prueba de Maven. El problema es que llamar a scripts maven con mvn clean install ... es en sí mismo un script y, por lo tanto, debe hacerse con call mvn clean install.
Código que funcionará
Tenga en cuenta más bien el uso de la llamada. Esto permitirá el uso de scripts maven consecutivos en el archivo por lotes.
fuente
El uso de símbolos dobles ejecutará el segundo comando, solo si el primero tiene éxito:
Donde como, usando solo un ampersand intentará ejecutar ambos comandos, incluso si el primero falla:
fuente
Si está ejecutando en Windows, puede usar el siguiente comando.
Manejar:
fuente
No sé la respuesta directa a tu pregunta, pero si haces muchos de estos scripts, puede valer la pena aprender un lenguaje más poderoso como perl. Existen implementaciones gratuitas para Windows (por ejemplo, activestate, cygwin). He encontrado que vale la pena el esfuerzo inicial para mis propias tareas.
Editar:
Según lo sugerido por @Ferruccio, si no puede instalar software adicional, considere vbscript y / o javascript. Están integrados en el host de secuencias de comandos de Windows.
fuente
Tenga en cuenta que no necesita punto y coma en los archivos por lotes. Y la razón por la que necesita usar call es que mvn en sí mismo es un archivo por lotes y los archivos por lotes deben llamarse entre sí con call, de lo contrario, el control no vuelve a la persona que llama.
fuente