rozumiem jak zadzwonić zagnieżdżone pliki wsadowe od wewnątrz pliku nadrzędnego używając komendy call
, gdyż istnieje wiele zasobów na tym:Dlaczego wywoływanie zagnieżdżonego pliku wsadowego bez uprzedniego wywołania "call" do wiersza kończy macierzysty plik wsadowy?
Jednak nie rozumiem, , dlaczego wywoływanie innego pliku wsadowego z innego kończy rodzica.
Dla mniej abstrakcyjny przykład, załóżmy, że mam plik wsadowy „linki” razem oddzielnych plikach wsadowych i błędnie nie dokleja call
do każdej linii:
foo.bat
bar.bat
To byłoby wykonać tylko foo .bat, a następnie wyjść. Aby poprawnie wykonać oba polecenia, musiałbym przed każdym stwierdzeniem wywołać połączenie:
call foo.bat
call bar.bat
Dlaczego pierwsza funkcjonalność nadal istnieje? Dlaczego to się nie zmieniło? Zauważyłem, że call
został wprowadzony w MS-DOS 3.3, który został wydany pod koniec lat 80., więc czy ta funkcjonalność jest tutaj nadal kompatybilna z odwrotnością? Nie mogę wymyślić jakichś (praktycznych) zastosowań, ale być może jestem zbyt przyzwyczajony do "nowych" technik programowania.
Okay, więc początkowa funkcjonalność została po prostu pominięta? "call" zostało zaimplementowane, ponieważ ludzie często używali obejść zgodnie z opisem? Nie zastąpiły początkowej funkcjonalności po prostu dla zgodności wstecznej? –
w prawo. Kompatybilność wsteczna pozwala na to, że wiele programów w wersji 3.0 nadal działa przy wygranej 7. Wówczas zakończyłem pisanie niektórych funkcji w asemblerze, aby był to program i mógł wrócić do pliku wsadowego - co jest teraz 'wyborem ', Zaimplementowałem za pomocą prostego programu, który ustawia poziom błędu na wartość ASCII wciśniętego znaku. – SeanC
Na marginesie, funkcja czytania linii, jej wykonywania, czytania innej linii itp. Oznacza, że możesz mieć samodzielnie modyfikujące pliki wsadowe. Nigdy nie robiłem tego celowo - ale jeśli masz plik wsadowy, który sam pobiera (nową wersję) z kontroli wersji, możesz uzyskać dziwne wyniki, gdy wykonuje wersję 1, aż do linii, która wykonuje wyszukiwanie, a następnie kontynuuje z wersją 2. – yoyo