Plik wsadowy systemu Windows ( called.bat
lub called.cmd
) można wywołać z innego pliku wsadowego ( caller.bat
lub caller.cmd
) lub interaktywnego polecenia cmd.exe na kilka sposobów:
- bezpośrednie połączenie:
called.bat
- używając polecenia call:
call called.bat
- używając polecenia cmd:
cmd /c called.bat
- za pomocą polecenia start:
start called.bat
Mam problem z rozróżnieniem ich przeznaczenia na podstawie tekstu pomocy: kiedy użyć którego? np. dlaczego mógłbym użyć polecenia „zadzwoń” zamiast bezpośredniego połączenia. Co za różnica?
Interesuje mnie jakiś raport podsumowujący, który analizuje wszystkie 4 możliwości (i inne, jeśli w ogóle ich brakuje) z różnych punktów widzenia: zalecane przypadki użycia, do których są przeznaczone, tworzenie procesów, kontekst wykonania, środowisko, przetwarzanie kodu zwrotnego.
Uwaga: używam dodatku SP3 dla systemu Windows XP.
źródło
start "" [options] command
Jedna rzecz nie jest jasna z komentarzy tutaj: kiedy wywołujesz jeden plik wsadowy z innego, używając tylko jego nazwy (przypadek nr 1 w pierwotnym pytaniu), wykonywanie zatrzymuje się z wywołującego pliku wsadowego. Na przykład w tych wierszach:
called.bat echo Hello
Linia „echo Hello” (i wszystko po niej) nie zostanie wywołana. Jeśli użyjesz słowa kluczowego „call”, wykonanie zostanie wznowione po wywołaniu. Więc w tym przypadku:
call called.bat echo Hello
Zostanie wywołana linia „echo Hello”.
Ponadto wszystkie zmienne ustawione w pliku nazwany.bat zostaną przekazane z powrotem do procesu wywołującego.
Wyobraź sobie plik „nazwany.bat”, który zawiera taki wiersz:
set MYVAR=hello
Wtedy% MYVAR% byłby dostępny dla wywołującego pliku wsadowego, gdyby użył:
Ale to nie będzie używane
źródło