2011-08-05 13 views
5

mam dwa wiersze polecenia połączenia w pliku wsadowym tak:Jak napisać polecenie połączenia w pliku wsadowym warunkowo?

call execute.cmd 
call launch.cmd 

Moja potrzeba jest wywołanie launch.cmd wtedy i tylko wtedy wezwanie do execute.cmd powiedzie. Czy istnieje jakiś sposób, w jaki mogę umieścić tutaj pewien warunek?

execute.cmd nie zwraca tutaj żadnej wartości.

Odpowiedz

5

If execute.cmd zwraca liczbę całkowitą, niż można użyć IF command aby sprawdzić jego wartość powrotu i jeśli pasuje pożądany jeden niż można nazwać launch.cmd

Załóżmy, że execute.cmd zwraca 0 w przypadku powodzenia lub liczbę całkowitą> = 1 w przeciwnym razie. Wsad będzie wyglądać następująco:

rem call the execute command 
call execute.cmd 
rem check the return value (referred here as errorlevel) 
if %ERRORLEVEL% ==1 GOTO noexecute 
rem call the launch command 
call launch.cmd 

:noexecute 
rem since we got here, launch is no longer going to be executed 

pamiętać, że komenda rem służy do komentarzy.

HTH,
JP

+0

exceute.cmd zwraca 0, jeśli się udało, a 1, jeśli nie, więc problem został rozwiązany za pomocą logiki, wielkie dzięki. Jako że odpowiedziałeś najpierw, akceptuję twoją odpowiedź, mimo że odpowiedź @jhclark wygląda poprawnie. – Anand

+0

@Anand Gupta your goodcome :) –

+0

Możesz również osiągnąć to samo z Windows Batch && połączenie w ten sposób: zadzwoń execute.cmd && zadzwoń launch.cmd – Aacini

3

Wierzę, że to jest duplikatem How do I make a batch file terminate upon encountering an error?.

Twój rozwiązaniem byłoby tutaj:

call execute.cmd 
if %errorlevel% neq 0 exit /b %errorlevel% 
call launch.cmd 
if %errorlevel% neq 0 exit /b %errorlevel% 

Niestety, wygląda na to, plików wsadowych systemu Windows nie mają odpowiednika UNIX bash na set -e i set -o pipefail. Jeśli chcesz zrezygnować z bardzo ograniczonego języka plików wsadowych, możesz wypróbować Windows PowerShell.

+0

Dziękuję, ty też .. – Anand

Powiązane problemy