Perché lo script batch richiederebbe più tempo dell'esecuzione manuale dei comandi


2

Ho scritto uno script batch per automatizzare l'avvio del mio ambiente di sviluppo, ma l'esecuzione richiede molto tempo. In realtà, in realtà non è mai finito. Si ferma dopo solr start. Sto solo supponendo che, se lasciato, sarebbe finito alla fine.

C'è qualche motivo per cui non continuerebbe a essere eseguito dopo solr start? solr starttermina completamente, quindi tutto ciò che viene mostrato è una sottolineatura lampeggiante dopo l'ultima riga di output del comando.

Ecco il mio script batch:

cd C:\AerospikeVM
vagrant up
cd C:\solr-6.1.0\bin
solr start
cd C:\XAMPP
xampp-control
cd C:\Program Files\Android\Android Studio\bin
studio64.exe
cd C:\Program Files\NetBeans 8.1\bin
netbeans64.exe
cd C:\Program Files\Genymobile\Genymotion
player --vm-name "Samsung Galaxy S6 - 6.0.0 - API 23 - 1440x2560"
cd C:\Program Files\Git
git-bash.exe
cd C:\Users\me\Programs\Program
start notepad Phase2.0_toDoCache.txt
start notepad Phase2.0_toDoList.txt

@LPChip No. Il nome del file batch è startDevelopmentEnvironment.bat. E solr startviene eseguito completamente. Si ferma dopo. Termina il comando, lo so perché emette Started Solr server on port 8983. Happy searching!, che è ciò che viene normalmente emesso al termine del comando. Ma non mostra mai il prossimo comando cd C:\XAMPP; solo il trattino basso lampeggiante. Inoltre, se chiudo lo script ed eseguo il comando da solo, si completa perfettamente.
scarpa,

Sì, l'ho visto dopo aver pubblicato il mio commento, quindi ho eliminato il mio commento e pubblicato una risposta.
LPChip,

Che tipo di file solrstai eseguendo? È un file batch?
Ƭᴇcʜιᴇ007,

@ Ƭᴇcʜιᴇ007 è uno script di comando di Windows
scarpa,

@ Ƭᴇcʜιᴇ007 sì.
scarpa,

Risposte:


3

Se avvii semplicemente un file batch (o .cmdscript di comando, che è fondamentalmente la stessa cosa ) da un altro file batch, non verrà restituito al completamento del batch interno, verrà semplicemente chiuso.

Per evitare questo comportamento, è possibile utilizzare il Callcomando per chiamare il file batch nidificato / interno, il che lo farà tornare al file batch padre una volta terminato e continuare l'esecuzione dei comandi.

Da call /?:

Chiama un programma batch da un altro.

CALL [unità:] [percorso] nome file [parametri batch]

Quindi cambia solr startin call solr.cmd starte il tuo file batch dovrebbe continuare dopo l'avvio di Solr.


2
Buon posto. A volte la mancanza di informazioni da parte della domanda può rendere difficile la risposta. Ma l'hai visto. :)
LPChip,

2

La ragione per cui ciò accade è che solr start sta avviando un programma e il tuo script ora sta aspettando che quel programma finisca prima che continui.

Per fermarlo, devi usare il comando start "title" "program"

Quindi, nel tuo esempio, vorresti sostituirlo solr startconstart "solr" "solr start"


nella tua risposta, a cosa serve il parametro solrdavanti al programma del titolo?
scarpa,

Eh? Si prega di leggere ss64.com/nt/start.html . Syntax START "title" [/D path] [options] "command" [parameters]. Dovresti avere "s intorno a entrambi titlee command.
DavidPostill

Includi sempre un TITOLO che può essere una stringa semplice come "My Script"o solo una coppia di virgolette vuote ""Secondo la documentazione Microsoft, il titolo è facoltativo, ma a seconda delle altre opzioni scelte puoi avere problemi se viene omesso.
DavidPostill

Ah giusto, ho dimenticato i requisiti per le citazioni per i titoli. modificato.
LPChip,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.