2015-10-19 18 views
5

Sto tentando di scrivere un semplice file batch per creare un progetto gulp e un progetto maven.Lo script batch interrompe l'esecuzione dopo che il processo `gulp` è completo, non continua a eseguire il resto dello script

Il file corrente segue:

cd C:\my\file\path 
cmd /k gulp maven-deploy-local 
cd C:\my\file\path\two\project-pom-parent 
cmd /k mvn clean install -Dmaven.test.skip=true 

Ogni volta che ho eseguito questo script, la linea di comando si ferma dopo la linea 2 e prima linea 3. I finiscono per guardare a questa linea in cmd con un cursore lampeggiante:

C: \ mio \ file \ path>

Se si esegue il file senza l'cmd /k (come segue) allora la richiesta semplicemente c perde dopo la linea 2 e prima linea 3.

cd C:\my\file\path 
gulp maven-deploy-local 
cd C:\my\file\path\two\project-pom-parent 
mvn clean install -Dmaven.test.skip=true 

Come posso modificare lo script batch in modo che continuerà ed eseguire i comandi sulle linee 3 e 4 e poi rimanere aperto con la seguente riga e cursore lampeggiante?

C: \ \ file \ percorso \ due \ progetto-pom-parent>

sto operanti sulla Windows 7 64-bit

risposta

7

Questo compito è abbastanza specifico da usare anche questo:

In sostanza il primo cmd /k può essere modificato in cmd /c in modo da eseguire il comando e continua fino all'ultimo comando, che lascia aperto il prompt.

+0

Questa soluzione è molto più facile da capire, utilizzare e mantenere. Grazie! –

+0

Sì, ha senso Foxidrive. Il primo CMD/C apre un altro ambiente in modo che ritorni all'ambiente originale dopo che è stato eseguito. Non riesco a ricordare perché abbiamo inventato la logica che ho usato e che ho ricordato da una domanda DosTips. – Squashman

+0

@Squashman Hai ragione - e se l'utente avesse bisogno di usare le variabili di ambiente impostate nel comando gulp allora 'cmd/c' non le restituirebbe allo script. – foxidrive

3
@ECHO OFF 
IF NOT "%1"=="1" CMD /K ""%~f0" 1" 
CD /d C:\my\file\path 
CALL gulp maven-deploy-local 
CD /d C:\my\file\path\two\project-pom-parent 
CALL mvn clean install -Dmaven.test.skip=true 
+0

Questa soluzione funziona, grazie. Risponderò e accetterò la risposta se includi una spiegazione di cosa stanno facendo le linee in modo da poter usare gli strumenti qui rappresentati in futuro :). –

+0

Le istruzioni CALL erano necessarie per impedire la chiusura del file batch dopo l'esecuzione di ciascun programma. L'istruzione IF NOT è solo un trucco per eseguire il file batch originale una seconda volta e tenerlo aperto usando il CMD/K. Quindi in teoria sta eseguendo il tuo file batch due volte. La prima volta esegue solo l'IF NOT. La seconda volta che IF NOT è FALSE perché ho passato un argomento al file batch in modo che esegua invece le ultime 4 righe di codice. – Squashman