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: 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
       
      


Valid XHTML 1.0 Transitional Valid CSS!