Mam plik .bat w systemie Windows, który robi trzy rzeczy
cmd1 arg1 arg2
cmd2 arg3
cmd3 arg4 arg5 arg6
Czasami cmd1 może zawieść i to jest w porządku, chciałbym kontynuować i wykonać cmd2 i cmd3. Ale mój nietoperz zatrzymuje się na cmd1. Jak mogę tego uniknąć?
Aktualizacja dla przejrzystości - nie są to inne pliki .bat, są to polecenia exe. Mam nadzieję, że nie muszę budować drzewa plików .bat, aby to osiągnąć.
windows
command-line
batch-file
ConfusedNoob
źródło
źródło
cmd /C
.Odpowiedzi:
Inną opcją jest użycie amperstand (
&
)cmd1 & cmd2 & cmd3
Jeśli użyjesz podwójnego, będzie on kontynuowany tylko wtedy, gdy poprzednie polecenie zakończy się pomyślnie (
%ERRORLEVEL%==0
)cmd1 && cmd2 && cmd3
Jeśli używasz podwójnego potoku (
||
), uruchamia on następne polecenie tylko wtedy, gdy poprzednie kończy się kodem błędu (%ERRORLEVEL% NEQ 0
)cmd1 || cmd2 || cmd3
źródło
CHKDSK
polecenie z argumentami, które działa. Piszęcheck D: & check E: & check F:
i działa. Argumenty pliku BAT obejmują/perf /f /r /b /scan
przełącznikiWcześniejsze cmd są inne pliki .bat stosu poleceń w następujący sposób:
źródło
To działało dla mnie:
Służy
cmd.exe
do wykonywania polecenia w nowej instancji interpretera poleceń systemu Windows, więc nieudane polecenie nie przerywa skryptu wsadowego./c
Flaga mówi interpreter do zakończenia, jak tylko zakończy wykonywanie poleceń.cmd2
wykonuje się, nawet jeśli pierwsze polecenie nie powiedzie się. Abycmd /?
uzyskać więcej informacji, zobacz wiersz polecenia systemu Windows.źródło