2011-12-16 21 views
6

Ho un file batch che ha diversi comandi come segue;Controllo di ritorno da un file batch

XCOPY 
DEL 
RMDIR 

anotherBatch.bat 

XCOPY 
DEL 
RMDIR 

Come si può vedere, in mezzo c'è una chiamata a un altro file batch (anotherBatch.bat), che fa alcune altre elaborazioni.

Ora la mia domanda è successiva alla successiva esecuzione di Batch, il controllo non ritorna mai al file batch originale e finisce proprio lì.

Come si assicura che il controllo venga restituito?

risposta

13

un lotto SUBROUTINE è un altro file batch denominato tramite comando CALL:

CALL subroutineName Param1 Param2 

La subroutine può essere collocato nello stesso file di il codice chiamante. Questo è indicato da precedenti il ​​suo nome con i due punti:

CALL :SubroutineInThisFile Param1 Param2 
. . . . 
. . . . 
. . . . 
EXIT /B 

:SubroutineInThisFile 
. . . 
EXIT /B 

:AnotherSubroutine 
. . . 
EXIT /B 

Il comando EXIT/B (non solo EXIT) viene utilizzato per indicare la fine subroutine nello stesso file; questo deve essere fatto anche per il programma principale.

Se un altro file batch viene richiamato senza alcun comando CALL, come nell'esempio, il risultato netto è simile a un "GOTO in un altro file": quando il file richiamato termina, il processo termina in quel punto. Ho chiamato "Overlay" (invece di "subroutine") un file Batch chiamato in questo modo.

+1

+1 Buona spiegazione –

+0

Thx un sacco ... C'è qualche variazione di CALL come parametri per rendere un altro Batch aperto in una nuova finestra E anche chiudere automaticamente quando fatto ... – testndtv

+0

Prova il comando start: START /? – Aacini

7

si dovrebbe chiamare in modo esplicito l'altro file batch

call anotherBatch.bat 
Problemi correlati