Przetwarzanie wsadowe w MS-DOS
Programem wsadowym nazywamy sekwencję poleceń systemu operacyjnego, umieszczoną w zbiorze tekstowym i przeznaczoną do wielokrotnego wykorzystywania. Programy mogą zawierać ( oprócz pleceń wsadowych ) instrukcje tzw. języka poleceń, który jest prostym językiem programowania, zawierającym niezbędne instrukcje sterujące. Instrukcje te pozwalają formułować zdania warunkowe, skoki, pętle, itp. W programach wsadowych można stosować zmienne i można im przekazywać parametry. Zbiory dyskowe zawierające programy wsadowe, mają zawsze rozszerzenie nazwy .BAT, a uruchamia się je, podobnie jak polecenia systemowe wpisując ich nazwę i naciskając klawisz ENTER.
Polecenia:
1. CALL [d:] [sc] plik [parametry] - wywołuje z programu przetwarzania wsadowego inny program przetwarzania wsadowego ( bez przerwania pracy bieżącego programu ).
[d:] [sc] plik - lokalizacja i nazwa wywoływanego programu przetwarzania wsadowego ( z rozszerzeniem .BAT ).
2. CHOICE [/c:lista] [/n] [/s] [ /t:znak, czas] [ tekst ] - pozwala użytkownikowi na wybór opcji z programu przetwarzania wsadowego.
/c:lista - określa listę znaków używanych przez użytkownika do dokonania wyboru
/n - nakazuje nie wyświetlanie żadnych pytań
/s - nakazuje rozpoznawanie małych i wielkich liter
/t:znak, czas - program będzie oczekiwał na dokonanie wyboru przez ilość sekund, jeśli wybór nie zostanie dokonany to wybiera opcję określoną przez znak. Standardowo program czeka na dokonanie wyboru przez użytkownika.
tekst - określa tekst wyświetlany na ekranie jako pytanie.
3. ECHO on|off lub ECHO [ informacja ] - wyświetla na ekranie ( lub nie ) wykonywane w pliku przetwarzania wsadowego polecenia. Umożliwia także wyświetlanie na ekranie dowolnego tekstu. Znak @ umożliwia niewyświetlanie na ekranie polecenia echo off.
on|off - powoduje wyświetlanie (on) na ekranie lub nie (off) nazw wykonywanych poleceń.
ECHO. - wyświetla na ekranie pustą linię.
4. FOR %% zmienna IN (zestaw) DO polecenie [parametry] - umożliwia wykonywanie danych poleceń dla każdego pliku z zadanego zestawu.
%% zmienna - nazwa zmiennej, która będzie zastępowana danymi pobranymi z zestawu
(zestaw) - określa zestaw plików ( lub wyrażeń tekstowych ), których ma dotyczyć polecenie FOR
polecenie - określa polecenie, które ma być wykonywane z każdym plikiem zestawu.
5. GOTO etykieta - powoduje skok programu do linii oznaczonej etykietą.
etykieta - nazwa etykiety ( w programie typu .BAT musi być poprzedzona dwukropkiem ).
6. IF [not] errorlevel numer polecenie - wykonywane jest polecenie gdy kod wyjścia z poprzednio uruchomionego przez COMMAND.COM programu jest większy od numer lub jemu równy
lub
IF [not] ciąg1 = = ciąg2 polecenie - polecenie jest wykonywane jeśli ciągi są identyczne
lub
IF [not] exist plik polecenie - warunek jest spełniony jeśli podany plik istnieje.
7. PAUSE - zatrzymuje wykonywanie programu wsadowego i wyświetla komunikat Press any key to continue...
8. REM [komentarz] - umożliwia wstawienie komentarza do pliku przetwarzania wsadowego.
9. SHIFT - przesuwa parametry programu wsadowego o jedno miejsce.
Przykłady programów wsadowych.
1. :pętla
IF `'%1'' = = `' `' GOTO koniec
DIR %1
SHIFT
GOTO pętla
:koniec
Wyświetla dowolne katalogi (należy je podać przy wywołaniu programu wsadowego), każdorazowo pobierany jest kolejny katalog z wprowadzonej przy wywołaniu listy. Po wyczerpaniu podanej listy katalogów spełniony zostaje warunek IF i następuje skok do etykiety :koniec.
2. IF EXIST A: %1 GOTO kom
COPY %1 A:
GOTO koniec
:kom
ECHO Plik %1 już znajduje się na dyskietce A:
:koniec
Wyświetla tekst „Plik %1 już znajduje się na dyskietce A:” pod warunkiem, że plik podany jako parametr wywołania istnieje na dyskietce A:. Jeśli nie istnieje to zostanie na nią skopiowany.
3. IF NOT EXIST A:%1.%3 COPY %1.%2 a:%1.%3
Jeśli podamy jako kolejne parametry NOWYPLIK, TXT, OLD to polecenie to spowoduje skopiowanie pliku NOWYPLIK.TXT na dyskietkę A: pod nazwą NOWYPLIK.OLD, pod warunkiem, że taki plik nie istnieje na dyskietce.
4. IF EXIST %1 GOTO istnieje
ECHO Plik %1 nie istnieje!!!
GOTO koniec
:istnieje
FIND/I `'begin'' <%1
FIND/I `'end'' <%1
:koniec
Program ten wypisuje wiersze zawierające słowo `'begin'', a następnie wiersze z wyrazem `'end'', z pliku podanego jako parametr wywołania pod warunkiem, że plik ten istnieje.
5. FOR %%x IN ( README.* *.DOC) DO MORE <%%x
Program ten wypisuje zawartość wszystkich plików README.* i *.DOC z katalogu bieżącego.
6. :pętla
IF `'%1'' = = `' `' GOTO koniec
attrib -r %1
DEL %1
SHIFT
GOTO pętla
:koniec
Program ten usuwa pliki podane jako kolejne parametry wywołania, nawet wtedy, gdy mają atrybut „tylko do odczytu”.
7. :pętla
DIR a:\%1 /b /s /p
ECHO Jeśli chcesz szukać dalej włóż nową dyskietkę
ECHO i naciśnij klawisz `t'.
CHOICE /c:tn Szukać dalej?
IF errorlevel2 GOTO koniec
GOTO pętla
:koniec
Program ten szuka pliku podanego jako parametr wywołania na dyskietkach kolejno wkładanych do napędu A: ( po umieszczeniu w stacji każdej kolejnej dyskietki program wyświetla pełne ścieżki dostępu wszystkich plików o podanej nazwie znajdujących się na dyskietce, a następnie pyta, czy kontynuować przeszukiwanie kolejnych dyskietek ).
8. IF `'%TMP%'' = = `'%TEMP%'' GOTO takiesame
ECHO Przypisuję zmiennej TEMP wartość zmiennej TMP
SET TEMP=%TMP%
GOTO koniec
:takiesame
ECHO Zmienne TMP i TEMP mają tą samą wartość:
ECHO %TMP%
:koniec
Program ten porównuje wartości zmiennych środowiskowych TMP i TEMP i jeśli są one równe wypisuje ich zawartość w przeciwnym przypadku przypisuje zmiennej TEMP wartość zmiennej TMP.
9. SET ISTNIEJĄ=TAK
:pętla
IF `'%1'' = = `' `' GOTO KONIEC
IF NOT EXIST %1 SET ISTNIEJĄ=NIE
SHIFT
GOTO pętla
:koniec
IF `'%ISTNIEJĄ%''==''TAK'' GOTO dalej
ECHO Nie wszystkie z podanych plików istnieją.
GOTO zakończ
:dalej
ECHO Wszystkie podane pliki istnieją
:zakończ
SET ISTNIEJĄ=
Program ten informuje użytkownika, czy istnieją wszystkie pliki podane jako kolejne parametry wywołania.
10. FOR %%x IN (*.TXT) DO COPY %%x A:
Program ten powoduje przekopiowanie wszystkich plików o rozszerzeniu .TXT na dyskietkę w stacji A: