Zbiory wsadowe (ang. batch) są wykorzystywane w celu uproszczenia pewnych powtarzających się operacji, wymagających każdorazowo podania jednego (zwykle długiego), lub też wielu poleceń dostępnych w trybie interakcyjnym. Oprócz takich poleceń można w nich stosować również pewne konstrukcje przeznaczone specjalnie do tego celu (zostaną one omówione poniżej).
Zbiór wsadowy to nic innego jak zbiór tekstowy (ASCII), z rozszerzeniem .bat, zawierający dowolny ciąg zewnętrznych i wewnętrznych poleceń systemu. Dodatkowo w plikach wsadowych można wykorzystać symbole: >, <, >> zmiany przyporządkowania standardowego strumienia informacji, polecenia zmiany dysku lub katalogu. Wykonanie pliku wsadowego wymaga podania jedynie jego nazwy (bez rozszerzenia)
z ewentualnymi parametrami. Wykonywanie pliku wsadowego można przerwać przez Ctrl+Break.
Trzeba tu dodać, że choć zbiór dostępnych poleceń jest dosyć ubogi, to jednak wykorzystując doświadczenie, a także korzystając ze zbiorów pomocniczych oraz pewnych trików można tworzyć zaawansowane zbiory wsadowe.
Niżej omówiono elementy niezbędne do tworzenia zbiorów wsadowych.
Zmienne środowiska
Wartości zmiennych środowiska, tworzonych poleceniem SET nazwa=wartość, gdzie wartość jest ciągiem znaków, są dostępne wewnątrz zbiorów wsadowych po otoczeniu nazwy zmiennej znakami %, np. %zmienna% spowoduje zastąpienie jej odpowiednim ciągiem znaków.
Parametry
Ponieważ podczas wywoływania zbioru wsadowego po jego nazwie możemy podać ciąg parametrów, konieczna jest możliwość odwoływania się do nich wewnątrz zbioru wsadowego. Jest to możliwe po użyciu symboli %0, %1, %2, … %9, przy czym %0 oznacza nazwę zbioru wsadowego, a dalsze parametry są oznaczane odpowiednio przez %1, %2, itd., np. po wywołaniu kopiuj.bat zbior.1 zbiór.2, wewnątrz zbioru kopiuj.bat symbol %0 oznacza nazwę zbioru wsadowego, %1 odpowiada nazwie zbior.1, a %2 nazwie zbior.2.
Polecenia zbiorów wsadowych
[CALL] nazwa_zbioru [parametry]
Polecenie to powoduje wykonanie programu wsadowego zawartego w zbiorze nazwa_zbioru (z ewentualnymi parametrami). Po jego wykonaniu nastąpi powrót do następnego polecenia w bieżącym zbiorze wsadowym (uwaga: brak polecenia CALL spowodowałby przerwanie wykonywania bieżącego zbioru wsadowego, ale brak powrotu do niego po zakończeniu wykonywania wywoływanego zbioru).
ECHO [ON | OFF | tekst]
ECHO ON powoduje włączenie wyświetlania tekstów poleceń zbioru wsadowego w czasie jego wykonywania (tryb domyślny),
ECHO OFF powoduje wyłączenie wyświetlania tekstów poleceń,
ECHO (bez parametru) powoduje wyświetlenie komunikatu „echo is off” lub „echo is on” w zależności od stanu faktycznego,
ECHO tekst powoduje wyświetlenie napisu tekst na ekranie,
ECHO. (kropka bez spacji) powoduje wyświetlenie pustego wiersza.
Dodatkowo każde polecenie w zbiorze wsadowym, które zostanie poprzedzone znakiem @ nie będzie wyświetlone bez względu na wcześniejsze użycie polecenia ECHO ON/OFF.
FOR %%z IN (lista) DO polecenie
Jego efektem jest podstawienie pod zmienną %%z kolejnych wartości z listy
i wykonanie polecenia tyle razy ile jest elementów listy. Lista może zawierać nazwy zbiorów (również wzorce nazw ze znakami * i ?) lub dowolne łańcuchy znaków oddzielone spacją lub innym separatorem.
Wykonywane polecenie może zawierać zmienną %%z jako parametr.
GOTO etykieta
Powoduje przekazanie sterowania (skok) do linii zawierającej podaną etykietę.
Za etykietę uważa się dowolną linię poprzedzoną znakiem : (dwukropka). Treść linii po etykiecie jest ignorowana.
IF [NOT] warunek polecenie
Polecenie warunkowe, powodujące wykonanie polecenia o ile jest spełniony podany warunek. Może on (warunek)być zapisany w następujący sposób:
ERRORLEVEL liczba warunek jest spełniony jeśli poprzednie polecenie zwróciło kod powrotu większy lub równy liczbie (wartość 0 oznacza poprawne zakończenie),
tekst==tekst warunek jest spełniony jeśli teksty są identyczne. Wewnątrz tekstu może wystąpić zmienna środowiska otoczona znakami %, która zostanie zastąpiona przez swoją wartość (aby uniknąć błędów syntaktycznych związanych z pustymi tekstami, należy podczas porównań stosować dodatkowe znaki, np. znak kropki),
EXIST nazwa_zbioru warunek jest spełniony jeśli zbiór istnieje. Nazwa_zbioru może zawierać znaki specjalne * i ?
PAUSE
Powoduje wyświetlenie komunikatu „Press any key to continue” i następuje zawieszenie wykonania programu aż do momentu naciśnięcia klawisza.
REM [tekst]
Polecenie służące do umieszczania wewnątrz zbiorów wsadowych komentarzy.
SHIFT
Polecenie to jest wykorzystywane jeśli podczas wywołania zbioru wsadowego podaliśmy dodatkowe parametry. Powoduje ono wtedy zmianę ich numeracji, tak że parametrowi %0 przypisywana jest wartość parametru %1, parametrowi %1 wartość %2, itd. Możliwy jest w ten sposób dostęp do większej liczby parametrów
niż 9.
Filtry
Filtrami nazywamy programy, które pobierają dane wejściowe ze standardowego wejścia i wysyłają je po ewentualnym przetworzeniu na standardowe wyjście. Dzięki temu możliwe jest łączenie takich programów w potoki (polecenie | polecenie)
FIND [/V][/C][/N][/I] „tekst” [zbiór]
/V wysłanie na wyjście wierszy NIE zawierających podanego tekstu wzorca,
/C wysłanie na wyjście liczby linii zawierających podany wzorzec,
/N każdy wysyłany wiersz będzie opatrzony swoim numerem w zbiorze,
/I ignorowanie różnicy między małymi i dużymi literami.
Pominięcie nazwy zbioru powoduje wczytanie danych ze standardowego wejścia.
Przykład:
DIR | FIND „Volume in drive” >> LABELS.TXT
Dopisanie etykiety dysku do zbioru LABELS.TXT.
MORE
Efektem jest wyświetlanie tekstu z zatrzymaniem po każdym pełnym ekranie. Dane pobierane są ze standardowego wejścia i wysyłane na standardowe wyjście.
Przykład:
TYPE read.me | MORE
SORT [/R][/+n]
Umożliwia on sortowanie wierszy zbioru wejściowego.
/R sortowanie w odwrotnej kolejności
/+n sortowanie rozpoczynając od n-tego znaku w wierszu
Małe i duże litery nie są rozróżniane.
Przykład:
CON | SORT > sorted.txt
Wiersze wpisane z klawiatury (zakończone Ctrl-Z) zostaną posortowane i wpisane do zbioru sorted.txt.
Uruchamianie aplikacji z okna Dos-a w Windows
START
Uruchamia aplikacje Windows lub programy dosowe, dla których wywołuje kolejną sesję Dos-a. Polecenia tego można także użyć do otwarcia dokumentu, jeśli w środowisku windows jest zdefiniowana skojarzona z tym dokumentem aplikacja. Na przykład start info.txt uruchomi NOTEPAD-a otwierając w nim zbiór info.txt.
START [options] program [arg...]
START [options] document.ext
/m[inimized] Uruchamia programy zminimalizowane.
/max[imized] Uruchamia programy w oknie na cały ekran.
/r[estored] Uruchamia programy w domyślnym oknie.
/w[ait] Uruchamia program i wstrzymuje bieżącą sesję do jego zakończenia.
Uruchamianie aplikacji windows z okna Dos-a
W oknie Dos-a można uruchamiać aplikacje windows podając nazwę uruchamianego programu i ewentualnie parametry jego wywołania. Aplikacje windows można także uruchamiać ze zbiorów BAT.
Technika „Drag & Drop” w oknie Dos-a
Do okienka dosowego można przeciągnąć ikony plików i folderów, powoduje to umieszczenie nazwy plików lub folderów, których ikony przeciągamy w buforze klawiatury sesji dosowej.
Kopiowanie i przesuwanie informacji do i z okna Dos-a
Jeśli jest aktywna belka narzędziowa w okienku Dos-a można zaznaczyć obszar ekranu i skopiować go lub wyciąć a następnie umieścić w aplikacji windows komendą WKLEJ. Można także użyć klawiszy Ctrl-C i Ctrl-V. Operacja przemieszczania informacji działa także w drugą stronę, to znaczy do okna Dos-owego z aplikacji windows lub innego okna Dos-owego.
Dodatkowe skróty w oznaczaniu katalogów
. oznacza bieżący katalog (znane ze starego Dos-a)
.. oznacza nadrzędny katalog do bieżącego (znane ze starego Dos-a)
... oznacza katalog o dwa poziomy wyżej od bieżącego (nowość w DOS-Win95)
.... oznacza katalog o trzy poziomy wyżej od bieżącego (nowość w DOS-Win95)
wystarczy tych kropek - więcej skrótów kropkowych już nie ma
„Shortcut-y” dla aplikacji Dos-a
Dla aplikacji Dos-owych (również BAT-ów) można tworzyć „shortcut-y” na „desktop-ie” i w „start menu”. Sposób uruchomienia takiego programu i jego zachowanie można modyfikować za pomocą opcji „properties”. Modyfikacji mogą podlegać: atrybuty pliku, linia wywołania programu wraz z parametrami,katalog roboczy programu, rodzaj okna w którym program ma się uruchomić, czcionka która ma być używana przez program, wielkość i rodzaj przydzielanej programowi pamięci przez system operacyjny, ikona programu, wygląd i zachowanie okna z programem.
Jako parametr w linii wywołania programu można wpisać „?” co spowoduje, że przy uruchomieniu takiego programu system wyświetli okienko dialogowe w którym można wpisać parametry jakie mają być użyte w bieżącym wywołaniu aplikacji.
Zadania do wykonania:
Zapoznać się z różnymi możliwościami użycia polecenia START. Sprawdzić co można zrobić używając techniki „Drag & Drop” w oknie DOS. Używając mechanizmów kopiowania i przesuwania umieścić w dokumencie WordPad'a raport z przykładowej sesji z programem DEBUG.
1. Napisać program *.BAT, który wypisze zbiory z kartoteki podanej jako pierwszy parametr, które odpowiadają wzorcom podanym jako kolejne parametry wywołania np.:
SDIR.BAT c:\works\cpp *.c *.cpp wypisze wszystkie zbiory z rozszerzeniem „c” i „cpp”.
Możliwa jest dowolna liczba parametrów. Po wyświetleniu takiej liczby zbiorów jak wierszy na ekranie wyświetlanie ma zostać wstrzymane. Nie powinny być wyświetlane żadne inne informacje niż nazwy zbiorów. Program ma uruchamiać się w oknie i nie usuwać okna po zakończeniu działania.
2. Napisać program *.BAT, który skasuje z katalogu podanego jako pierwszy parametr wywołania pliki starsze niż data podana jako drugi parametr wywołania. Wykorzystać możliwości XCOPY i MOVE. Program ma uruchamiać się w oknie i usuwać okno po zakończeniu działania.
3. Napisać program SHELL.BAT, którego zachowanie będzie następujące: po uruchomieniu ikony programu z desktopu wyświetlone zostanie zapytanie o parametry jeśli parametrem będzie E i nazwa_zbioru to ma zostać uruchomiony na cały ekran edytor WordPad z otwartym podanym jako drugi parametr dokumentem, a SHELL ma zakończyć działanie. Jeśli parametrem będzie L mają zostać uruchomione jednocześnie na ekranie kalkulator i edytor Notepad, a SHELL ma zakończyć działanie. Jeśli parametrem będzie P i nazwa_dysku ma zostać uruchomiony najpierw program SCANDISK dla podanego dysku, a po jego zakończeniu program DEFRAG dla podanego dysku, a SHELL ma zakończyć działanie. Jeśli nie będzie żadnego parametru ma zostać wyświetlony zbiór pomocy SHELL.HLP
Zachowanie programu SHELL .BAT ma zostać tak skonfigurowane by podczas jego działania nie było widoczne na ekranie okno DOS, w którym program jest wykonywany.
4. Napisać program *.BAT, który sklei w jeden plik o nazwie podanej jako pierwszy parametr wywołania wszystkie pliki w bieżącym katalogu mające rozszerzenia podane jako dalsze parametry (może ich być dowolna ilość !!!). W pliku docelowym przed każdym dołączonym plikiem powinien znajdować się nagłówek o postaci:
***************************
<nazwa_doklejanego_zbioru>
***************************
Ponadto program ma się umieć przedstawić, w razie braku lub zbyt małej liczby parametrów podać odpowiednią informację, przykład wywołania np.
sklej.bat iniki *.ini
Ten batch można wykorzystać do złożenia sprawozdania...
5. Napisać program wsadowy, który będzie badał obecność katalogu wskazywanego przez zmienne środowiskowe TEMP (TMP). Jeżeli katalog przez nią wskazywany istnieje program będzie czyścił zawartość tego katalogu (kasowanie ma się odbywać bez dodatkowych komunikatów na ekranie). Jeżeli katalog nie istnieje program powinnien założyć katalog np.: C:\TEMP dodać definicję zmiennej TEMP i TMP do systemu i do autoexec.bat (!). Przewidzieć możliwość wywoływania tego programu ze zbioru autoexec.bat
Sprawozdanie należy wysłać w terminie jednego tygodnia, sprawozdanie powinno zawierać skład sekcji oraz grupę i numer sekcji oraz wstawioną (nie robić attach-y !) skomentowaną treść batch-y.
Ćwiczenie 1 - Win98 - zbiory wsadowe Prowadzący: Ulczok Jarosław
Zakład Teorii i Projektowania Systemów Komputerowych Strona - 5 -