Mam plik wsadowy okien, z kilkoma sub-rutyny w nim coś takiego:Jak zakończyć plik wsadowy systemu Windows z poziomu procedury "wywołania"?
call :a
goto :eof
:a
call :b
goto :eof
:b
:: How do I directly exit here from here?
goto :eof
biegnę to w cmd okna na Vista.
Jeśli wykryję błąd gdzieś w pliku wsadowym, chcę go zakończyć przy niezerowym poziomie błędu. Czy jest coś, co mogę napisać w procedurze: b, która spowoduje, że plik wsadowy zakończy się w ten sposób.
- Próbowałem "exit", który zamyka całe okno cmd. Nie tego chcę.
- Próbowałem "exit/B 1". To powraca do poprzedniej procedury. Aby użyć tego schematu po każdym "wywołaniu", musiałbym ostrożnie napisać "jeśli poziom błędu 1 wyjście/B 1" po każdym pojedynczym "wywołaniu", aby przekazać błąd, z powrotem do stosu wywołań. Wolałbym nie pisać tej linii po każdym wywołaniu.
Ten artykuł był interesujący, ale żadne z alternatyw nie zachowuje się tak, jak chcę. http://www.computerhope.com/exithlp.htm
Czy istnieje inny sposób?
Dzięki.
Fajnie, dzięki. To jest jak dotąd najlepsze. Z tego dowiedziałem się, że jeśli użyję "call: a || goto: eof", poziom błędu będzie propagowany z powrotem. Przydatne, jeśli określony poziom błędu ma pewne znaczenie użytkowe. –
Tak, to brzmi naprawdę lepiej. Nie myślałem o tym. Również rekursywne przerwanie I opisane nie jest realną opcją, tak przypuszczam :) – Joey
Tak, rekursywne przerwanie było powieścią, ale tylko trochę za daleko! :) –