W przypadku skryptów wsadowych w systemie Windows programiści mogą kontrolować przepływ skryptów, korzystając z różnych technik i metod wprowadzania pauz lub oczekiwań. Polecenia „pauza” i „czekaj” to dwa sposoby kontrolowania przepływu plików wsadowych. Polecenie „pauza” zatrzymuje wykonywanie pliku wsadowego podczas wyświetlania komunikatu „Naciśnij dowolny klawisz, aby kontynuować…”. Plik wsadowy nie może zostać uruchomiony, dopóki użytkownik nie naciśnie klawisza. Wykonywanie pliku wsadowego zostaje zawieszone na liczbę sekund wskazaną przez instrukcję Wait.
Polecenie wstrzymania pliku wsadowego
Polecenie „pause” pliku wsadowego zatrzymuje wykonywanie pliku wsadowego podczas wyświetlania komunikatu w wierszu poleceń. Plik wsadowy nie zostanie uruchomiony, dopóki użytkownik nie naciśnie klawisza. Pomocna jest komenda zatrzymująca kolejne wykonanie. Korzystne jest bezpośrednie uruchomienie pliku wsadowego i wyświetlenie żądanych wyników na ekranie.
Składnia polecenia „pauza” jest następująca:
Pauza
Monituj użytkownika o wprowadzenie danych
Polecenie „pauza” w poniższym skrypcie wsadowym powoduje wyświetlenie komunikatu „Naciśnij dowolny klawisz, aby kontynuować…”, gdy użytkownik uruchomi ten plik wsadowy. Zanim plik wsadowy przejdzie do polecenia „dir”, użytkownik musi nacisnąć klawisz.
@echo wyłączone
rem Ten plik wsadowy jest wstrzymywany, aby użytkownik mógł nacisnąć klawisz.
echo Witamy w demonstracji polecenia PAUSE.
echo Wykonywanie skryptu jest kontynuowane po pauzie.
pauza
rem Ten plik wsadowy jest kontynuowany z następnym poleceniem.
echo Dziękuję!
Ty
Gdy użytkownik naciśnie dowolny klawisz za pomocą klawiatury, proces wsadowy będzie kontynuowany:
Polecenie oczekiwania na plik wsadowy
Podany kod to plik wsadowy otwierający dwa programy: Notatnik i Paint. Kod jest następujący:
@echo wyłączoneecho Uruchamianie pierwszego programu.
START /B /CZEKAJ notatnik.exe
echo Notatnik pomyślnie otwarty w tle
echo Uruchamianie drugiego programu.
URUCHOM /CZEKAJ mspaint.exe
echo Farba została pomyślnie otwarta.
cmd /k
Pierwsza linia „@echo off” zapobiega wyświetlaniu poleceń w trakcie ich wykonywania w pliku wsadowym.
Użytkownik jest po prostu informowany, że uruchamiany jest pierwszy program, poprzez drugą linię, czyli „echo Uruchamianie pierwszego programu”.
Trzecia linia, „START /B /WAIT notepad.exe”, otwiera program Notatnik w oknie w tle i czeka na zakończenie przed kontynuowaniem. Przełącznik „/B” nakazuje poleceniu START uruchomienie programu w oknie w tle, a przełącznik „/WAIT” nakazuje poleceniu START zaczekanie na zakończenie programu przed kontynuowaniem.
Czwarta linia czyta Notatnik echa. Kiedy Notatnik zostanie pomyślnie otwarty w tle, powiadamia on jedynie użytkownika za pomocą komunikatu.
Piąta linia, „echo Uruchamianie drugiego programu”, po prostu wyświetla użytkownikowi komunikat, że rozpoczyna się drugi program.
Szósta linia „START /WAIT mspaint.exe” otwiera program Paint w oknie w tle i nie czeka na jego zakończenie przed kontynuowaniem.
Siódmy wiersz, „echo Farba została pomyślnie otwarta”, po prostu wyświetla użytkownikowi wiadomość, że farba została pomyślnie otwarta.
Ósmy wiersz, „cmd /k”, otwiera nowe okno wiersza poleceń i pozostawia otwarte okno bieżącego wiersza poleceń.
Używanie pętli do niestandardowych opóźnień
Możemy użyć pętli do niestandardowych opóźnień w procesie wsadowym. Oto przykład:
W tym przykładzie pierwszy komunikat jest wyświetlany użytkownikowi po uruchomieniu tego pliku wsadowego. Pierwszy komunikat zostanie wyświetlony ponownie po rozpoczęciu pętli „for”. Polecenie timeout zatrzymuje plik wsadowy na jedną sekundę przed wyświetleniem drugiego komunikatu. Ostateczny komunikat jest następnie wyświetlany po łącznie 10 iteracjach.
@echo wyłączoneecho Demonstracja opóźnienia przy użyciu pętli
for /l %%i w (1,1,10) do (
limit czasu /t 1 /nobreak > nul
echo Ten komunikat wyświetla się po %%i sekundach
)
echo Ten komunikat wyświetlił się z 10-sekundowym opóźnieniem.
Korzystanie z limitu czasu dla opóźnienia
Polecenie timeout pliku wsadowego wstrzymuje wykonywanie pliku wsadowego na określoną liczbę sekund. Składnia jest podana tutaj:
limit czasu /tPrzełącznik „/t” określa czas oczekiwania w sekundach. Przełącznik „/nobreak” uniemożliwia użytkownikowi naciśnięcie klawisza w celu przerwania opóźnienia.
Polecenie „timeout” może zostać użyte do:
- Odłóż wykonanie pliku wsadowego na określony czas
- Zapobiegaj przerwaniu działania pliku wsadowego przez użytkownika
- Stwórz bardziej przyjazne dla użytkownika środowisko, zapobiegając konieczności naciskania klawisza przez użytkownika, aby kontynuować
Na przykład następujący plik wsadowy zostanie wstrzymany na 10 sekund:
@echo wyłączoneecho Witam, wykonywanie skryptu jest kontynuowane po 10 sekundach opóźnienia
przekroczenie limitu czasu /t 10
echo Dziękuję!
Jak pokazano na poniższym zrzucie ekranu, licznik czasu jest uruchomiony i czeka, aż użytkownik przerwie polecenie „limitu czasu” poprzez naciśnięcie dowolnego klawisza. Jeśli użytkownik naciśnie dowolny klawisz, proces zatrzymuje się i przechodzi do następnego polecenia w pliku wsadowym:
Użytkownik na poniższym zrzucie ekranu przerywa polecenie „timeout” po 5 sekundach, co skutkuje wyświetleniem komunikatu „Dziękujemy!” wiadomość:
Poniższy zrzut ekranu pokazuje, jak działa funkcja „Dziękujemy!” wydruk komunikatu na ekranie zajmuje 10 sekund, jeśli użytkownik końcowy nie przerwie instrukcji przekroczenia limitu czasu:
Oto zaktualizowany kod, który został zmodyfikowany w celu uwzględnienia przełącznika no-break, który uniemożliwia użytkownikowi końcowemu przerwanie procesu pliku wsadowego:
@echo wyłączonerem Ten plik wsadowy jest wstrzymywany na 10 sekund
echo Witam, wykonywanie skryptu jest kontynuowane po 10 sekundach opóźnienia
limit czasu /t 10 /nobreak
rem Po 10 sekundach to polecenie zostanie wyświetlone na ekranie zachęty
echo Dziękuję!
Oto wynik poprzedniego kodu:
Wiersz poleceń wyświetla monit o wpisanie Y lub N, jeśli użytkownik użyje polecenia „CTRL+C”. Jeśli użytkownik kliknie Y, to zadanie wsadowe zostanie zatrzymane:
Polecenia „pauza”, „czekaj” i „limit czasu” to sposoby kontrolowania przepływu naszych skryptów. Działanie skryptu zostaje zawieszone w przypadku użycia polecenia „pauza” i zatrzymane na określony czas w przypadku użycia polecenia „timeout”.
Używanie instrukcji warunkowych do sterowania przepływem
Instrukcje warunkowe są najpowszechniej wykonalną techniką stosowaną do modyfikowania przebiegu skryptu w oparciu o określone okoliczności. W zależności od tego, czy warunek jest prawdziwy, czy fałszywy, instrukcja „if” wykonuje jeden z dwóch fragmentów kodu. Instrukcja „if” ma następującą strukturę:
jeśliPrzykład:
Otwórz Notatnik lub dowolny wybrany edytor tekstu i napisz poniższy kod, który inicjuje wartość zmiennej inputValue na 1 w trzeciej linii. Wartość zmiennej inputValue jest następnie sprawdzana za pomocą instrukcji „if” w czasie wykonywania, aby sprawdzić, czy jest równa 1, 2 czy 3. Jeśli tak, na ekranie wiersza poleceń wyświetlany jest odpowiedni komunikat. Jeżeli tak nie jest, wyświetlony zostanie ostatni komunikat. W instrukcji warunkowej znanej jako „if” sprawdzana jest wartość wejściowa zmiennej, aby sprawdzić, czy jest równa 1, 2 lub 3. Jeśli tak, wykonywany jest jeden z dwóch bloków kodu. Jeśli warunek jest prawdziwy, instrukcja warunkowa nie robi nic.
@echo wyłączonerem Ten skrypt testuje zmienną inputValue względem wartości 1, 2 i 3.
ustaw wartość wejściową = 1
jeśli '%inputValue%'=='1' (
echo Wartość wejściowa jest równa 1.
) else jeśli '%inputValue%'=='2' (
echo Wartość wejściowa jest równa 2.
) else jeśli '%inputValue%'=='3' (
echo Wartość wejściowa jest równa 3.
) w przeciwnym razie (
echo Zmienna inputValue nie jest równa 1, 2 lub 3.
)
Wyjście:
Wniosek
Przepływ skryptów można kontrolować, a procesy można automatyzować w systemie operacyjnym Windows za pomocą poleceń, pętli i instrukcji warunkowych, takich jak „if”. Programiści mogą zatrzymać wykonywanie skryptu lub dodać opóźnienia za pomocą polecenia „pauza”, wykorzystując „limit czasu” lub „ping”. Chociaż w skryptach wsadowych nie ma wbudowanej instrukcji „switch”, możemy ją symulować za pomocą wyrażeń „if” i „else if”. Testowanie ma kluczowe znaczenie, aby upewnić się, że skrypty te działają zgodnie z zamierzeniami w odpowiednim kontekście. Skrypty te są przydatne do automatyzacji, zarządzania systemem i manipulacji plikami.