Jak wywołać inny skrypt wsadowy z poziomu skryptu wsadowego?
Chcę, aby był wykonywany w if
oświadczeniu.
Jak wywołać inny skrypt wsadowy z poziomu skryptu wsadowego?
Chcę, aby był wykonywany w if
oświadczeniu.
Użyj CALL
jak w
CALL nameOfOtherFile.bat
Spowoduje to zablokowanie (wstrzymanie) wykonywania bieżącego pliku wsadowego i zaczeka do zakończenia CALL
edycji.
Jeśli nie chcesz, aby blokował, użyj START
zamiast tego.
Uzyskaj szczegółowe informacje, używając CALL /?
lub START /?
z wiersza polecenia cmd.
Możesz po prostu wywołać skrypt wsadowy według nazwy, tak jakbyś działał w wierszu poleceń.
Załóżmy więc, że masz plik, bar.bat
który mówi echo This is bar.bat!
i chcesz go wywołać z pliku foo.bat
, możesz zapisać to w foo.bat
:
if "%1"=="blah" bar
Uruchom foo blah
z wiersza poleceń, a zobaczysz:
C:\>foo blah
C:\>if "blah" == "blah" bar
C:\>echo This is bar.bat!
This is bar.bat!
Ale uwaga : gdy wywołasz skrypt wsadowy z innego skryptu wsadowego, oryginalny skrypt wsadowy przestanie działać. Jeśli chcesz uruchomić dodatkowy skrypt wsadowy, a następnie powrócić do poprzedniego skryptu wsadowego, musisz użyć call
polecenia. Na przykład:
if "%1"=="blah" call bar
echo That's all for foo.bat!
Jeśli na tym uruchomisz foo blah
, zobaczysz:
C:\>foo blah
C:\>if "blah" == "blah" call bar
C:\>echo This is bar.bat!
This is bar.bat!
C:\>echo That's all for foo.bat!
That's all for foo.bat!
Powinieneś użyć CALL
CALL batch.bat
call
będzie kontynuowało wykonywanie nawet z błędem w wywołanym skrypcie.Oto przykład:
Masz bat:
i b. bat wywołany warunkowo z a.bat:
źródło
Jeśli chcesz otworzyć plik wsadowy w innym oknie, użyj
start
. W ten sposób możesz w zasadzie uruchamiać dwa skrypty jednocześnie. Innymi słowy, nie musisz czekać na zakończenie wywoływanego skryptu. Wszystkie poniższe przykłady działają:Jeśli chcesz poczekać na zakończenie działania skryptu, spróbuj
start /w call batch.bat
, ale plik batch.bat musi kończyć się naexit
.źródło
Uruchom równolegle w oddzielnych oknach poleceń w stanie zminimalizowanym
dayStart.bat
Uruchom sekwencyjnie w tym samym oknie
release.bat
źródło
huh, nie wiem dlaczego, ale połączenie nie zadziałało,
call script.bat
nie powróciło do oryginalnej konsoli.cmd /k script.bat
powrócił do oryginalnej konsoli.źródło