Programowanie wsadowe DOS/Windows
Oryginalne materiały do ćwiczenia znajdują się pod adresem:
Tryb linii komend i programowanie wsadowe w systemach DOS/Windows
Program "choice"
Spis poleceń
Wstęp
Program wsadowy jest to ciąg poleceń trybu linii komend lub wywołań programów
zapisany w pliku tekstowym o rozszerzeniu .bat
Celem programowania wsadowego jest:
- przyspieszenie pracy
- personalizacja środowiska systemu operacyjnego
W języku programowania wsadowego można stosować wszystkie komendy dostępne
w trybie linii komend. Do sterowania działaniem programu wsadowego służą
komendy sterujące:
call |
- uruchamia programu wsadowego z poziomu innego programu wsadowego,
a następnie powrót do programu źródłowego (odpowiednik procedury w językach
wyższego rzędu) |
echo |
- wyświetla komunikaty na ekranie, oraz może służyć do włączania lub wyłączania
wyświetlania komunikatów |
for |
- powtarza komendę dla zestawu zmiennych |
goto |
- przechodzi do innej części programu |
if |
- wykonuje komendy w zależności od spełnienia warunku |
pause |
- zatrzymuje wykonanie programu do czasu wciśnięcia dowolnego klawisza |
rem |
- komentarz |
shift |
- przesuwa parametry programu (%9->%8,%8->%7 itd.) |
choice |
- pozwala użytkownikowi wybrać opcję podczas wykonywania programu |
Informacje o sposobie wywołania komendy uzyskuje się poprzez wpisanie nazwy komendy z parametrem
/?
np.: if /?
.
Nazwy programów wsadowych podlegają tym samym ograniczeniom, jak nazwy plików w systemie -
dopuszczalne są długie nazwy. Programy wsadowe uruchamia się podając w trybie interaktywnym
nazwę pliku wsadowego. Plik wsadowy można także uruchomić w trybie okienkowym wybierając go
poprzez podwójne (lub jednokrotne - zależnie od ustawień) kliknięcie klawiszem myszki -
tak jak każdy inny program. Zatrzymać wykonanie programu wsadowego można poprzez naciśnięcie
kombinacji klawiszy Ctrl+S
lub Pause
.
Wykonanie programu jest kontynuowane po naciśnięciu dowolnego klawisza. Przerwać działanie programu
wsadowego można poprzez naciśnięcie kombinacji klawiszy Ctrl+C
lub Ctrl+Break
.
Wyświetlanie komunikatów
Komunikaty w programach wsadowych można wyświetlać korzystając z instrukcji echo
.
Składnia
echo Treść komunikatu | - wyświetla na ekranie treść komunikatu |
echo. | - wyświetla na ekranie pustą linię |
Przykład
echo Program przesuwa pliki z katalogu KAT1 do katalogu KAT2
move KAT1 KAT2
dir KAT2
W celu wyświetenia dłuższych tekstów, korzystniej jest zapisać treść w pliku tekstowym i wyświetlić go
używając instrukcji type
- przyspiesza to pracę, szczególnie w sieciach.
Komenda echo
może być użyta do ograniczenia wyświetlania wykonywanych instrukcji programu:
echo off | - wyłącza wyświetlanie wykonywanych instrukcji |
echo on | - włącza wyświetlanie wykonywanych instrukcji |
Efekt podobny do użycia echo off
dla pojedynczej instrukcji można osiągnąć
poprzedzając instrukcję znakiem @
.
Przykład
@echo off
echo Program kopiuje pliki tekstowe z katalogu KAT1 do KAT2
copy KAT1 KAT2
dir KAT2
Komenda pause
Zatrzymanie programu można wymusić korzystając z komendy pause
. Instrukcja pause
wyświetla komunikat Press any key to continue... a następnie oczekuje na wciśnięcie dowolnego klawisza.
Przykład
@echo off
echo Program kasuje pliki tekstowe w KAT1
echo Zaczynam kasować...
pause
del KAT1\*.txt
cls
dir KAT1
W celu pominięcia wyświetlania komunikatu, wyjście komendy pause
można skierować
na wyjście puste: nul
.
Przykład
echo Naciśnij dowolny klawisz
pause > nul
Skok do etykiety
Można zmienić kolejność wykonywania instrukcji programu poprzez instrukcją skoku goto
.
Składnia:
goto
Etykieta
Etykiety definiuje się pisząc nazwę etykiety poprzedzoną dwukropkiem np.: :end
Podprogramy
W programach wsadowych można stosować podprogramy umieszczając je w osobnych plikach wsadowych,
a wywołując je przy użyciu komendy call
.
Przykład
rem Program do kopiowania plików z KAT1 do KAT2
rem Program wsadowy uruchamiany z katalogu KAT2
@echo off
echo Program kopiuje pliki tekstowe
pause > nul
call kopiuj
cls
dir
W powyższym przykładzie wywołano program znajdujący się w pliku kopiuj.bat
rem Kopiowanie z katalogu KAT1 do bieżącego
copy KAT1 .
Powyższy przykład wykonać w dwóch wersjach: poprzedzając nazwę podprogramu kopiuj
instrukcją call
i bez tej instrukcji. Zaobserwować różnicę w działaniu.
Programy z parametrami
Programy wsadowe mogą być wywoływane z parametrami. Dostęp do parametrów z poziomu programu odbywa się
przez użycie symboli %0
do %9
. Symbol %0
oznacza nazwę
wykonywanego programu wsadowego. Symbole od %1
do %9
odpowiadają kolejnym parametrom.
W sposób prosty można się odwołać do dziewięciu parametrów.
Przykład
@echo off
echo Progrma kopiuje pliki tekstowe
pause
copy %1\*.txt %2
cls
dir %2 /p
Instrukcja warunkowa if
W programach wsadowych można używać instrukcji warunkowej if
Składnia
if [not] errorlevel
numer instrukcja
- wykonaj instrukcję instrukcja jeżeli kod wyjściowy z poprzedniego programu (errorlevel)
[nie] jest mniejszy niż numer
if [not]
ciąg1==ciąg2 instrukcja
- wykonaj instrukcję instrukcja jeżeli ciąg znaków ciąg1 [nie] jest równy ciągowi ciąg2
if [not] exist
nazwa_pliku instrukcja
- wykonaj instrukcję instrukcja jeżeli [nie] istnieje plik: nazwa_pliku
Nawiasy [] oznaczają część opcjonalną.
Przykład
if "%1"=="kopiuj" goto FCOPY
fi "%1"=="przesun" goto FMOVE
goto EXIT
:FCOPY
copy KAT1 KAT2
goto EXIT
:FMOVE
move KAT1 KAT2
:EXIT
Instrukcja for
Opis instrukcji i jej użycia opisany jest w ćwiczeniu z poleceniami.
Komunikacja z użytkownikiem
W programowaniu wsadowym komunikacja z użytkownikiem jest zagadnieniem skomplikowanym.
Program choice.com
wyświetla komunikat, zgłasza oczekiwanie na odpowiedź,
wczytuje znak z klawiatury, a następnie ustawia kod wyjścia, który służy do identyfikacji wciśniętego klawisza.
Składnia
choice
tekst
- Powoduje wyświetlenie na ekranie komunikatu w postaci: tekst [Y,N]?
Jeśli użytkownik wciśnie Y lub y to program choice
ustawi wartość
kodu wyjścia na 1, jeśli wciśnie N lub n kod wyjścia przyjmie wartość 2.
Jeśli użytkownik wciśnie Ctrl+Break
lub Ctrl+C
to program ustawi
kod wyjścia na 0. Wciśnięcie każdego innego klawisza powoduje wygenerowanie krótkiego dźwięku,
a program choice
będzie czekał na odpowiedź.
Przy pomocy opcji /c:lista
możemy rozszerzyć zakres dopuszczalnych odpowiedzi.
Opcja /c
umożliwia ustawienie rozróżniania dużych i małych liter.
Przykładem wykorzystania choice
może być system menu, z którego wybieramy opcje.
Przykład
@echo off
:BEG
cls
echo ***MENU***
echo.
echo 1. Strona Wydzialu Elektrycznego
echo 2. Notatnik
echo 3. Kalkulator
echo 4. Koniec
choice /c:1234 Wybierz opcje
if errorlevel 4 goto END
if errorlevel 3 goto CALC
if errorlevel 2 goto NOTE
if errorlevel 1 goto WWW
goto BEG
:CALC
start calc
goto BEG
:NOTE
start notepad
goto BEG
:WWW
start http://www.ee.pw.edu.pl
goto BEG
:END