2010-06-02 8 views
0

J'ai un fichier batch, updatesipversion.bat qui appelle un autre fichier batch, template.bat.Fichier batch, exécution de la seconde commande si la première commande est sortie

updatesipversion.bat Code:

set init=empty 
set main=svn propget svn:externals ./3c > install\msbuild\SipBranchDefaultDetailsTemplate.txt 
set error=update 
set action=empty 

call template.bat "%init%" "%main%" "%error%" "%action%" 

set init=empty 
set main=install\msbuild\SipBranchDetails.exe 
set error=update 
set action=empty 

call template.bat "%init%" "%main%" "%error%" "%action%" 

template.bat Code

set /a WAcounter=0 
for %%a in (%*) do set /a WAcounter+=1 
if not %WAcounter%==4 goto :Error 
set WAinit=%1 
set WAmain=%2 
set WAerror=%3 
set WAaction=%4 
set /a WAcounter=0 

:WAinitCommand 
IF NOT %1=="empty" %WAinit:~1,-1% 

:WAmainCommand 
set /a WAcounter+=1 
IF NOT %2=="empty" %WAmain:~1,-1% 
if %errorlevel%==0 goto :WASuccess 

:WAerrorMsg 
IF NOT %3=="empty" echo ERROR in %WAerror:~1,-1% Trying again...... 
if %WAcounter% equ 10 goto :Finish 
goto :WAmainCommand 

:WASuccess 
IF NOT %4=="empty" %WAaction:~1,-1% 
exit 

:Finish 
exit 

:Error 
echo there must be 4 command line arguments 
exit 
pause 

Lorsque la commande for dans le premier appel à Template.bat appeler if %errorlevel==0% alors il sort de :WASuccess, sinon sorties de :Finish.

Le deuxième modèle de temps n'est pas appelé ou les autres commandes ne sont pas exécutées.

S'il vous plaît dites-moi si la première commande est terminée, comment continuer à faire appel deuxième modèle.

Merci

+0

pour la lisibilité pouvez-vous s'il vous plaît éditer votre poste et faire le code parties lokk liek code? – Thariama

+0

Notez que vous pouvez utiliser '% ~ 1', etc. pour supprimer automatiquement les guillemets qui rendraient le reste de ce lot beaucoup plus facile à lire. – Joey

Répondre

1

Vous devez utiliser soit start au lieu de call, ou utilisez exit /B ou goto :eof de votre lot appelé. Voir this for reference.

+0

Bon point sur 'exit/b' ou' goto: eof'. La partie à propos de 'start' est un non-sens, à moins qu'ils ne souhaitent exécuter' template.bat' de façon asynchrone. – Joey

Questions connexes