Pisanie i stosowanie programów wsadowych
Pliki wsadowe, nazywane programami wsadowymi z racji przynależności do grupy plików wykonywalnych, mają rozszerzenie nazwy BAT. Tego rodzaju programy są plikami tekstowymi składającymi się z ciągu poleceń wykonywanych kolejno automatycznie przez system DOS. Jeżeli na przykład wykonujesz rutynowo ciąg poleceń, takich jak kopiowanie lub drukowanie plików, to możesz włączyć je do programu (pliku) wsadowego. Następnie możesz wykonać wszystkie polecenia automatycznie wprowadzając nazwę programu wsadowego z poziomu programu DOS Shell lub wiersza poleceń. Możesz też wykonać program wsadowy z innego programu wsadowego, np. AUTOEXEC. BAT.
Programy wsadowe są plikami tekstowymi, zatem możesz je pisać i modyfikować za pomocą systemowego edytora tekstu (opisanego powyżej) albo innego edytora lub procesora tekstu.
!!! Ostrzeżenie - Jeśli redagujesz program wsadowy za pomocą procesora tekstu, to upewnij się, że plik wynikowy jest „ czystym" plikiem tekstowym (ASCII).
» Wskazówka
Jeśli chcesz zatrzymać program wsadowy przed jego zakończeniem, to naciśnij CtrI+C lub CtrI+Break, a następnie napisz Y w odpowiedzi na prośbę o potwierdzenie.
Polecenia stosowane w programach wsadowych
W programach wsadowych możesz używać dowolnych poleceń systemu DOS. Oprócz nich istnieją specjalne polecenia wsadowe, wymienione w tablicy 8.3. Nie są one zwykle (lub nie mogą być) stosowane w wierszu poleceń.
Tablica 8.3. Polecenia wsadowe (przeznaczone specjalnie dla programów wsadowych)
Funkcja |
Polecenie wsadowe |
Umożliwia włączenie do programu uwag i komentarzy (wprowadzenie nie wykonywanych wierszy) Włącza lub wyłącza wyświetlanie poleceń podczas wykonywania programu, wyświetla tekst
Powoduje przejście do wykonania wskazanego wiersza programu, różnego od następnego rozpoczynającego się od :Etykieta (Etykieta jest nazwą wpisaną po dwukropku) Umożliwia warunkowe wykonanie polecenia uzależnionego od:
Wstrzymuje wykonywanie programu do chwili pojawienia się znaku na standardowym wejściu użytkownika Wywołuje inny program wsadowy |
REM
ECHO ON GOTO Etykieta
PAUSE CALL |
Stosowanie zmiennych w programach wsadowych
Podczas wywoływania programu wsadowego możesz po jego nazwie podać dodatkowy tekst (parametry). Zmienne programu wsadowego o nazwach od % l do %9 są zastępowane (od strony lewej do prawej) danymi z tekstu podanego w wierszu polecenia. Jeśli np. napiszesz polecenie DO.BAT file1 file2 w celu wykonania programu wsadowego DO.BAT, to zmienna %1 przyjmie wartość file1, a zmienna %2 — file2. Zmienna %0 zawsze zawiera nazwę polecenia stanowiącego program wsadowy (w tym przykładzie DO.BAT).
Pokazany niżej prosty program wsadowy pokazuje sposób korzystania ze zmiennych programu wsadowego oraz zasady ich zastępowania rzeczywistymi wartościami podczas wykonywania programu.
@echo off
echo Nazwa programu wsadowego (parametr 0) %%0 = %0
echo parametr %%1 = %1
echo parametr %%2 = %2
echo parametr %%3 = %3
echo parametr %%4 = %4
echo parametr %%5 = %5
echo parametr %%6 = %6
echo parametr %%7 = %7
echo parametr %%8 = %8
echo parametr %%9 = %9
Jeśli zapisałbyś te wiersze w pliku TEST. BAT, to mógłbyś wykonać program wsadowy podając następujące polecenie w wierszu poleceń:
test pierwszy drugi trzeci 4ty 5ty 6ty
Spowodowałoby to wyświetlenie następujących wierszy na ekranie:
Nazwa programu wsadowego (%0) = test
parametr %1 = pierwszy
parametr %2 = drugi
parametr %3 = trzeci
parametr %4 = 4ty
parametr %5 = 5ty
parametr %6 = 6ty
parametr %7 =
parametr %8 =
parametr %9 =
Pierwszy wiersz programu wsadowego — @ECHO OFF — powoduje wyłączenie wyświetlania pozostałych wierszy poleceń pliku wsadowego. Znak @ zapobiega wyświetleniu polecenia ECHO OFF.
Polecenia ECHO w pozostałych wierszach programu wsadowego wyświetlają podane w nich teksty (komunikaty). Każdy komunikat zawiera tekst oraz zmienną zaczynającą się od znaku %, która zostaje zastąpiona tekstem podanym w wierszu polecenia. Na przykład wiersz
echo Nazwa programu wsadowego (%%0) = %0
spowoduje wyświetlenie komunikatu „Nazwa programu wsadowego (%0) = test". Zauważmy, w jaki sposób system interpretuje dwa znaki %: tekst %%0 jest wyświetlany jako %0. Natomiast wystąpienie %0jest zastępowane w wyświetlanym
komunikacie wartością zmiennej %0, będące nazwa programu wsadowego (w tym przykładzie test).
Podobnie, gdy system napotyka wiersz
echo %%1 = %1
wyświetla tekst „%1 =" (pamiętajmy, że tekst %%1 jest interpretowany jako %1) i zastępuje nazwę zmiennej %1 tekstem stanowiącym pierwszy parametr wywołania programu wsadowego (w naszym przykładzie — słowo „pierwszy").
Ponieważ nie dostarczono siódmego, ósmego i dziewiątego parametru w wywołaniu w wierszu poleceń, więc wartości %7, %8 i %9 s? puste (null).
Oczywiście w bardziej praktycznych programach wsadowych często parametrami, które zastępuje zmienne wiersza polecenia, sę nazwy plików, jak np. w następującym hipotetycznym programie wsadowym C.BAT:
copy %1 %2
Jeśli wykonałbyś program wsadowy C.BAT pisząc polecenie c ala asia
to system DOS skopiowałby plik ala nadając kopii nazwę asia (przy założeniu, że ala istnieje).
Ćwiczenia:
Utwórz plik wsadowy 1.bat wyszukujący wszystkie pliki na dysku c: z rozszerzeniem tmp.
Utwórz plik wsadowy 2.bat wyszukujący i usuwający z dysku c: pliki z rozszerzeniem tmp.
Utwórz plik wsadowy 3.bat wyszukujący wszystkie pliki z rozszerzeniem podanym w postaci parametru.
Utwórz plik wsadowy 4.bat modyfikujący znak zachęty tak aby wyświetlane było hasło witaj „tu wstaw swoje imię” a następnie ścieżkę dostępu i znak większości
Utwórz plik wsadowy 5.bat przywracający znak zachęty do poprzedniej postaci
Utwórz plik wsadowy 6.bat wyświetlający hasło składające się z kilku wyrazów wprowadzane w postaci parametru.(Wskazówka: parametr może składać się z kilku wyrazów ujętych w cudzysłów)
Utwórz plik o nazwie Ola.txt a następnie plik wsadowy o nazwie 7.bat kopiujący plik tekstowy o nazwie Ola.txt do pliku o tekstowego o nazwie wprowadzonej w postaci pierwszego parametru.
Utwórz plik wsadowy o nazwie 8.bat wyświetlający zawartość pliku o nazwie podanej w parametrze wprowadzanym za nazwa pliku. Do realizacji zadania utwórz dwa pliki o nazwach plik1.txt o zawartości wtlaczja mi wiedze do glowy i plik2.txt o zawartości Ale bede madry
Utwórz plik wsadowy o nazwie kreator.bat tworzący plik tekstowy o nazwie Ala.txt zawierający tekst wprowadzony z klawiatury po uruchomieniu pliku kreator.bat a nastepnie kopiujący plik Ala.txt do pliku o tekstowego o nazwie wprowadzonej w postaci drugiego parametru.
Utwórz plik wsadowy o nazwie 10.bat kopiujący wszystkie pliki z bieżącego katalogu do katalogu temp zlokalizowanego w katalogu bieżącym. Jeżeli katalog temp nie istnieje plik wsadowy powinien wysłać na ekran informacje o tym fakcie a następnie utworzyć katalog temp i przekopiować do niego wszystkie pliki z bieżącego.