Programowanie wsadowe DOS/Windows
1. 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:
cali - 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.) W dalszej części instrukcji zostaną szczegółowo omówione powyższe instrukcje.
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 (najlepiej łącznie z rozszerzeniem). 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 Pause.
2. Używanie Notatnika do tworzenia skryptów.
Skrypty są plikami tekstowymi, więc do ich tworzenia można używać programu Notatnik. Należy jednak uważać na jedną cechę tego programu: podczas zapisywania dodaje on rozszerzenie txt do nazwy programu, np. zapisując pod nazwę skrypt .bat program zapisze skrypt .bat. txt, czyli NIE jest to skrypt. Aby Notatnik nie dodawał rozszerzenia, to przy pierwszym zapisie (tylko wtedy podajemy nazwę) oprócz wpisania nazwy i rozszerzenia, np. skrypt. bat należy na oknie
II. Programowanie wsadowe DOS/Windows
1
dialogowym wybrać opcję Wszystkie pliki w okienku Zapisz jako typ. Uchroni to przed dodaniem rozszerzenia txt.
Przy przeglądaniu plików za pomocą standardowego narzędzia „Mój komputer” są ukryte znane przez system operacyjny rozszerzenia plików, co utrudnia podejrzenie prawdziwego rozszerzenia pliku. Aby wyłączyć tą opcję, należy wybrać z menu Narzędzia^Opcje folderów. . . a następnie na zakładce Widok odznaczyć opcję Ukryj rozszerzenia plików znanych typów.
3. Wyświetlanie komunikatów
Komunikaty w programach wsadowych można wyświetlać korzystając z instrukcji echo. Składnia tego polecenia:
echo <Treść komunikatu> Aby wyświetlić pustą linię należy użyć polecenia
echo. (z kropką na końcu, bez spacji).
Przykład
echo Program przesuwa pliki z katalogu KAT1 do KAT2 move KAT1 KAT2 dir KAT2
Aby dany tekst nie wyświetlać na ekranie, ale aby zapisać do pliku, należy posłużyć się symbolami przekierowania > oraz >> omówionymi w instrukcji do pierwszego ćwiczenia.
W celu wyświetlania 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. I tak, aby wyłączyć wyświetlanie wykonywanych instrukcji należy użyć instrukcji:
echo off Aby włączyć wyświetlanie wykonywanych instrukcji:
echo on
Efekt podobny do użycia echo off dla pojedynczej instrukcji można osiągnąć poprzedzając instrukcję znakiem @. Warto wspomnieć, że wywołując polecenie echo off pojawi się na ekranie ta instrukcja (bo „echo” nie jest jeszcze wyłączone), dlatego najczęściej jest wywoływane polecenie @echo off. Zazwyczaj nie jest pożądane wyświetlanie poszczególnych poleceń ze skryptu, dlatego też większość skryptów będzie się zaczynać od tego polecenia.
@echo off
echo Program kopiuje pliki tekstowe z katalogu KAT1 do
KAT 2
copy KAT1 KAT2
dir KAT2
2
4. Komenda pause
Zatrzymanie programu można wymusić korzystając z komendy pause. Instrukcja pause wyświetla komunikat
Naciśnij dowolny klawisz aby kontynuować... a następnie oczekuje na wciśnięcie dowolnego klawisza.
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 przekierować na wyjście puste: nul, tak jak na poniższym przykładzie:
echo Naciśnij dowolny klawisz pause > nul
Ćwiczenia do wykonania
W katalogu, do którego masz prawo do zapisu, utwórz skrypt o nazwie a . bat
Skrypt ma utworzyć następującą strukturę katalogów:
kat1 kat2
podkatalog jeden (proszę zachować spację w nazwie podkatalogu)
3. W każdym podkatalogu proszę utworzyć plik nazwa. txt, który będzie zawierał ścieżkę dotego katalogu (należy wykorzystać polecenie cd i przekierowanie strumienia)
5. Etykieta i skok do etykiety goto
Etykieta jest to nazwa danego wiersza w skrypcie. Etykiety definiuje się pisząc nazwę etykiety poprzedzoną dwukropkiem np.:
:etykieta
Poprzez etykiety i instrukcje skoku goto można zmienić kolejność wykonywania instrukcji programu. Składnia polecenia skoku wygląda następująco:
goto etykieta
Przykład:
echo Zaraz zostanie wywołana instrukcja skoku
II. Programowanie wsadowe DOS/Windows 3
goto etl
echo To polecenie zostanie pominięte
: etl
6. Programy z parametrami i polecenie shi ft
Programy wsadowe mogą być wywoływane z parametrami tak jak zwykłe programy/polecenia, np. dla polecenia copy pliki plik2 pierwszym argumentem jest pliki, a drugim piik2. Dostęp do parametrów z poziomu programu wsadowego 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.
echo Program kopiuje pliki tekstowe
copy %l\*.txt %2
cis
dir %2 /p
Aby móc odczytać kolejne parametry NIE można posłużyć się symbolem %10, ponieważ przez system zostanie to zrozumiane jako parametr pierwszy, do którego zostanie doklejone 0, czyli dla wywołania:
Skrypt.bat Ala Ola 4 5 6 7 8 9 10 11 parametry będą interpretowane w następujący sposób
%1 = Ala
%10 = AlaO
Aby móc korzystać z kolejnych parametrów należy użyć polecenia shif t, które przesuwa kolejność argumentów o jeden, tzn. parametr %1 staje się parametrem %0, parametr %2 staje się %1 itd., natomiast niedostępny wcześniej parametr dziesiąty staje się parametrem %9 (poprzednia wartość parametru %0 zostanie „skasowana”).
echo %0
shift
echo %0 Po wywołaniu skryptu poleceniem
Skrypt.bat Ala Ola Ela wyświetli się następujący wynik:
Skrypt.bat
Ala
4
Ola
7. Instrukcja warunkowa if
W programach wsadowych można używać instrukcji warunkowej if, której ogólna zasada sprowadza się do sprawdzenia określonego warunku logicznego i przy jego spełnieniu wykonania dowolnej instrukcji.
if [not] errorlevel numer instrukcja
(Nawiasy [] oznaczają część opcjonalną.)
Ta postać instrukcji if wykona instrukcję instrukcja jeżeli kod wyjściowy z poprzedniego
programu (errorlevel) [nie] jest mniejszy niż numer.
copy nie_ma_tego_pliku.txt plik2.txt
if errorlevel 1 echo Nie udało się skopiować
if [not] ciągl==ciąg2 instrukcja
Wykonanie instrukcji instrukcja, jeżeli ciąg znaków ciągi [nie] jest równy ciągowi ciąg2. Aby ustrzec się przed bł...
kajoj__