.BAT - Programowanie komendami DOS dla początkujących i zaawansowanych użytkowników PC

Wykaz poleceń

  ZNAK @
  CALL
  CHOICE
  ECHO
  FOR
  GOTO
  IF
  PAUSE
  REM
  SET
  SHIFT


ZNAK @ - ZAPOBIEGA WYŚWIETLENIU ECHA

@polecenie
polecenie - jakiekolwiek polecenie przetwarzania wsadowego.

Przykład 1.
@ECHO OFF

Umieszczenie znaku @ przed poleceniem ECHO OFF spowoduje, że napis ECHO OFF nie będzie widoczny na ekranie komputera. To najczęstsze zastosowanie tego znaku.

CALL - WEZWANIE INNEGO PLIKU

CALL [n:] [ścieżka] nazwapliku [parametry]
nazwapliku - może być plikiem .BAT, programem (plik typu .COM lub .EXE), poleceniem DOS.
parametry - parametry wywołania pliku. Jeżeli programem wywoływanym jest plik wsadowy, parametry są identyfikowane przy pomocy cyfr poprzedzonych znakiem procentu (%1 do %9). Parametrem może być również zmienna środowiskowa (utworzona za pomocą polecenia SET) - wówczas nazwę ujmujemy w parę znaków %, np %katalog%.

W wierszu zawierającym komendę CALL nie wolno używać przełącznika wejścia/wyjścia i przetwarzania potokowego.

Przykład 1.
Wezwanie pliku DRUGIBAT.BAT, znajdującego się na dysku sztywnym w katalogu BATY.
CALL C:\BATY\DRUGIBAT.BAT

Przykład 2.
Wywołanie pliku z parametrem, znajdującego się w katalogu bieżącym. Parametr posiada opcję V (na przykład dla polecenia COPY).
CALL JANEK %2 /V

CHOICE - UMOŻLIWIA WYBÓR SPOŚRÓD KILKU WARIANTÓW DZIAŁANIA

CHOICE [/c[:] [klawisze] [/n] [/s] [/t[:]c,nn] ] [komunikat]

/c[:] klawisze - przyporządkowanie liter klawiszy poszczególnym wariantom działania. Te litery pojawiają się na ekranie komputera w nawiasie kwadratowym, oddzielone przecinkami, ze znakiem zapytania na końcu. Pominięcie tej opcji powoduje wyświetlenie standardowego zapytania [Y,N] ? Nazwa klawisza zostanie przekazana w kodzie powrotu polecenia CHOICE do DOS. NA przykład: po poleceniu CHOICE / ctn naciśnięcie klawisza "T" (tak) nada zmiennej ERRORLEVEL wartość 1, a klawisza "N" (nie) wartość 2. Wartość ERRORLEVEL może być następnie badana przez polecenie IF.
/n - użycie tej opcji spowoduje, że wyświetlony zostanie tylko komunikat napisany przez użytkownika.
/s - polecenie CHOICE będzie odróżniać duże litery od małych.
/t[:]c,nn - wskazuje klawisz (musi to być klawisz wymieniony w zmiennych /c[:] [klawisze), który zostanie samoczynnie wybrany, gdy w czasie nn (od 1 do 99 sekund) nie zostaie dokonany żaden wybór.
komunikat - tekst, który zostanie wyświetlony na ekranie komputera.

Polecenie CHOICE jest bardzo przydatną komendą w konstruowaniu plików wsadowych. Jej atrakcyjność polega głównie na możliwościach eleganckiego wyprowadzania komunikatów lub zapytań na ekran monitora. Zwracany kod (ERRORLEVEL) może być wykorzystany do dalszego sterowania przebiegiem programu.

Przykład 1.
CHOICE /c:tnd Tak Nie Dalej
Polecenie CHOICE wyświetli na ekranie: Tak Nie Dalej [T,N,D] ?

Przykład 2.
CHOICE /c:tnd /t:d,30

Polecenie CHOICE, tak jak w poprzednim przykładzie, wyprowadzi na ekran zapytanie [T,N,D] , oczekując na naciśnięcie odpowiedniego klawisza. Jeżeli w czasie 30 sekund użytkownik nie dokona wyboru, to program sam wybierze odpowiedź taką jaką przyjęliśmy za standardową (w tym przykładzie d - dalej) i zwróci ustalony kod dla ERRORLEVEL (w tym przykładzie 3). Natomiast, gdy klawisz komputera zostanie naciśnięty przed upływem 30 sekund, to wybór został dokonany i ERRORLEVEL zwróci wartość odpowiednią dla przyciśniętego klawisza (1, 2 lub 3).

ECHO - PRZEŁĄCZANIE ECHA POLECEŃ

ECHO [ON|OFF|informacja]
ON... - na ekran wyprowadzane są teksty kolejno wykonywanych poleceń zawartych w pliku wsadowym i echo tych poleceń (jeszcze raz to samo).

...|OF|... - pokazywane jest tylko echo poleceń. ...|informacja - treść, którą chcemy wyświetlić na ekranie.

Polecenie poprzedzone znakiem @ nie będzie wyprowadzone na ekran, nawet jeżeli jest ustawiony tryb ON. ECHO. (z kropką) daje pusty wiersz. ECHO bez parametru pokazuje stan komendy ECHO (czy jest ON czy OFF).

Przykład 1.
ECHO1.BAT
ECHO Podaj parametry !

ECHOF.BAT
ECHO OFF
ECHO Podaj parametry !

ECHO@.BAT
@ECHO OFF
ECHO Podaj parametry !

Wywołując pierwszy plik - ECHO1, otrzymamy na ekranie napisy:
"Podaj parametry !"
"Podaj parametry !".

Po wykonaniu pliku drugiego - ECHOF, pojawi się napis:
ECHO OFF
"Podaj parametry !".
Natomiast plik trzeci - ECHO@ wyprowadzi jedynie napis:
"Podaj parametry !",
gdyż znak "@" powoduje wyłączenie komendy ECHO OFF.

FOR - POWTARZANIE AKCJI

FOR %%X IN (seria) DO polecenie [argumenty]
Składnia dla wywołania z wnętrza pliku wsadowego.
FOR %X IN (seria) DO polecenie [argumenty]
Składnia dla wywołania z linii komend.
%%X lub %X - nazwa zmiennej, która będzie kolejno zastępowana nazwą pliku lub ciągiem znaków z serii. Mogą to być, na przykład, litery od A do Z. Zmienna sterująca musi składać się tylko z jednego znaku. Nazwa zmiennej nie może być reprezentowana przez cyfry. Wielkość liter ma znaczenie. (seria) - określa pliki lub ciągi znaków, które będą przetwarzane przez określone polecenie. Elementy serii należy oddzielić spacjami (wolną przestrzenią). W nazwach plików często używa się dżokerów - "*" i "?". Seria plików lub znaków musi być koniecznie umieszczona w nawiasach. argumenty - są to parametry polecenia i oznaczają zmienną sterującą %%X lub %X. Nie wolno mylić parametrów występujących w plikach wsadowych oznaczonych %0 do %9 ze zmienną sterującą polecenia FOR (%%X, %%K,etc). Obydwie nazwy (parametr i zmienna sterująca) składają się z jednego znaku, jednak parametry zawierające cyfry, to parametry wywołania pliku, a nie zmienna sterująca !

Przykład 1.
DRUKUJ.BAT
FOR %%D IN (LISTY.TXT DANE.TXT PRZEPISY.TXT) DO TYPE %%D > PRN
Plik DRUKUJ.BAT ma za zadanie wydrukować zawartość podanych plików tekstowych: LISTY.TXT, DANE.TXT, PRZEPISY.TXT.

Przykład 2.
INFO.BAT
FOR %%A IN (%1 %2 %3) DO DIR %%A Ten program będzie wyświetlał informacje o plikach. Można go wykorzystać do sprawdzenia plików z rozszerzeniem .COM, .EXE, .BAT. Wykonanie programu nastapi po podaniu nazwy pliku i parametrów , np: INFO *.COM *.EXE *.BAT.

GOTO - PRZEKAZANIE STEROWANIA DO ETYKIETY

GOTO [:] etykieta
etykieta - jest ciągiem znaków; brane jest pod uwagę 8 początkowych znaków.Jeżeli etykieta nie zostanie odnaleziona, to pojawi się napis: "label not found" i realizacja pliku zostanie przerwana.
: - etykietę umieszcza się przed poleceniami, które będą wykonane (np. - : wariant2).

Etykiety nie są wyświetlane na ekranie nawet w trybie ECHO ON, co daje możliwość użycia jej w formie komentarza (oczywiście bez wcześniejszej instrukcji GOTO). Użycie dwukropka zamiast komendy REM, zmniejsza czas wykonania części programu zawierającej tekst, w której może się znaleźć opis pliku, instrukcje,uwagi,etc..

Przykład 1.
ETYKIET.BAT
ECHO Tu rozpoczyna się program.
:: Polecenie GOTO przekaże sterowanie do części programu
:: opatrzonej etykietą ETY2.
GOTO ETY2
:ETY1
ECHO Jesteś w części programu opatrzonej etykietą ETY1.
:: Komenda GOTO dokona skoku do etykiety ETY3.
GOTO ETY3
:ETY2
ECHO Program jest realizowany w części programu opatrzonej
ECHO etykietą ETY2.
:: Polecenie GOTO przeniesie wykonywanie dalszej części programu
:: do fragmentu poprzedzonego etykietą ETY1.
GOTO ETY1
:ETY3
ECHO Tu etykieta ETY3.
:: Zadaniem tej części pliku jest zakończenie prezentacji
:: możliwości komendy GOTO.

Program ETYKET obrazuje ideę pracy komendy GOTO; pokazano także sposób użycia dwukropka w linii komentarza.

IF - INSTRUKCJA WARUNKOWA

IF [NOT] warunek polecenie

NOT - zmienia logiczną wartość warunku na przeciwną.
warunek - jest badany poleceniem IF i występuje w jednej z trzech postaci:
1. tekst1==tekst2
Tekst1 i tekst2 są ciągami znaków (litery małe są odróżniane od dużych, nie używamy cudzysłowów). Tekst(1 lub 2) może być parametrem pliku wsadowego (np. %5).
Warunek jest spełniony, gdy ciągi znaków są równe.
2. EXIST [n:] [ścieżka] nazwplik [.roz]
Warunek jest spełniony, gdy podany plik istnieje. W nazwie mogą być użyte dżokery ("?", "*").
3. ERRORLEVEL numer
Jeżeli poprzednio realizowany program lub polecenie DOS zostało zakończone wartością kodu wyjściowego większą lub równą numerowi, to nastąpi spełnienie tego warunku.
polecenie - określa polecenie, jakie ma być wykonane, jeżeli warunek zostanie spełniony.

Przykład 1.
Program wsadowy sprawdzający poprawność podanego hasła.

HASLO.BAT
@IF %1 == HOKUSPOKUS GOTO TAK
ECHO Niestety, niewłaściwe hasło !
GOTO KONIEC
:TAK
ECHO Tak - hasło prawidłowe.
:KONIEC

Przykład 2.
Sprawdzenie istnienia jakiegoś pliku w katalogu bieżącym. Wywołanie programu JEST musi zawierać jeden parametr wywołania - nazwę poszukiwanego pliku.

JEST.BAT
@ECHO OFF
IF EXIST %1 ECHO Plik %1 istnieje !
IF EXIST %1 GOTO END
ECHO Plik %1 nie istnieje !
:END

Przykład 3.
SPRWDZ.BAT
IF NOT EXIST B:\OSTATKI\DRUKI.TXT MD B:\OSTATKI
COPY C:\UMOWY\DRUKI.TXT B:\OSTATKI\DRUKI.TXT

Powyższy plik wsadowy sprawdza czy w katalogu OSTATKI na dysku B istnieje plik DRUKI.TXT, jeżeli nie istnieje to zostanie skopiowany z katalogu UMOWY znajdującego się na dysku C.

Przykład 4.
Nadajmy programowi z przykładu 3 bardziej uniwersalny charakter, taki, by mógł dokonywać sprawdzenia i kopiowania dowolnych plików.

SPRWDZB.BAT
IF NOT EXIST %1 MD %2
COPY %3 %1

Wywołanie tego programu z 3 parametrami z poprzedniego przykładu wygląda następująco:

SPRWDZB B:\OSTATKI\DRUKI.TXT C:\UMOWY\DRUKI.TXT B:\OSTATKI\DRUKI.TXT

Przykład 5.
System DOS wyprowadza komunikaty w języku angielskim. Treść tych komunikatów nie zawsze jest zrozumiała dla osób nie znającących języka angielskiego.
Wartość programu wsadowego wzrośnie, gdy informacje o błędzie w działaniu jakiejś komendy DOS będą napisane w języku polskim. Jak to zrealizować pokaże ten oto przykład:

INFEROR.BAT
@ECHO OFF
XCOPY %1 %2
IF ERRORLEVEL 5 GOTO ZAPIS
IF ERRORLEVEL 4 GOTO OPCJE
IF ERRORLEVEL 2 GOTO INTERWENC
IF ERRORLEVEL 1 GOTO BRAK
GOTO KONIEC
:ZAPIS
ECHO Błąd w zapisie na dysku docelowym.
GOTO KONIEC
:OPCJE
ECHO Wystąpił jeden z następujących przypadków:
ECHO 1. Brak pamięci operacyjnej,
ECHO 2. Brak miejsca na dysku docelowym,
ECHO 3. Parametry wywołania pliku zostały użyte niezgodnie z konwencją
ECHO wywołania plików wsadowych,
ECHO 4. Niewłaściwa nazwa dysku docelowego.
GOTO KONIEC
:INTERWENC
ECHO Kopiowanie przerwano na życzenie użytkownika.
GOTO KONIEC
:BRAK
ECHO Podane nazwy plików nie odnaleziono.
GOTO KONIEC
:KONIEC

PAUSE - ZATRZYMANIE DZIAŁANIA PLIKU WSADOWEGO

PAUSE [komunikat]
komunikat - to tekst komunikatu, który ma być wyświetlony na ekranie pod napisem standardowym DOS ("Press any key to continue...), gdy system czeka na naciśnięcie klawisza. Komunikat będzie wyświetlony tylko przy włączonym ECHO. Tekst może zawierać najwyżej 121 znaków. Jeśli wprowadzimy polecenie PAUSE bez parametru [komunikat], DOS wyświetli tylko standardowy napis; ten napis jest wyświetlany także przy wyłączonoym ECHO.

Przykład 1.
POWADOM.BAT

PAUSE Wymień dyskietkę w napędzie A:.Neciśnij dowolny klawisz, gdy skończysz.
Wykonanie jedynej komendy w pliku POWADOM.BAT - PAUSE spowoduje, że pojawi się następujący komunikat:
"PAUSE Wymień dyskietkę w napędzie A:.Naciśnij dowolny klawisz, gdy skończysz.
Press any key to continue... "

Przykład 2.
POWADOMB.BAT
@ECHO OFF
ECHO Wymień dyskietkę w napędzie A:.Naciśnij jakiś klawisz, gdy skończysz.
PAUSE > NUL
W drugim pliku pokazano bardziej elegancki sposób na wyprowadzanie komunikatów. Tutaj zobaczymy na ekranie tylko napisany przez nas tekst:
"Wymień dyskietkę w napędzie A:.Naciśnij jakiś klawisz, gdy skończysz".

REM - KOMENTARZ

REM [komentarz]
komentarz - informacja, instrukcja lub polecenie, które zostaną wyłączone z programu.
Wiersz w programie wsadowym zaczynający się od REM jest ignorowany przez DOS. W tym wierszu umieszcza się najczęściej komentarz ułatwiający zrozumienie działania pliku BAT. Można tą metodę stosować do wyłączanie określonych poleceń w programach wsadowych, na przykład podczas testowania działania. Komentarz jest wyprowadzony na ekran tylko wtedy, gdy ustawiony jest tryb echa (ECHO ON) - w pozostałych przypadkach jest ignorowany.

Przykład 1.
KMENTRZ.BAT
ECHO ON
ECHO Naciśnij jakiś klawisz po przeczytaniu..
PAUSE > NUL
REM Przykład wyprowadzenie komentarza na ekran.
REM
REM DIR
REM Przykład wyłączenia działania komendy DOS.

SET - NADANIE NAZWY ZMIENNEJ ŚRODOWISKOWE

Jakkolwiek polecenie SET ma szersze zastosowanie i nie jest zaliczane do komend przetwarzania wsadowego, to z uwagi na szczególną przydatność w konstrukcji plików BAT, zostało zamieszone razem z tymi poleceniami.

SET [zmienna=[tekst]]
zmienna=... - określa nazwę zmiennej,którą chcemy utworzyć lub zmodyfikować. tekst - przypisuje tekst (ciąg znaków) zmiennej środowiskowej.

Polecenie dodaje parę, nazwę i tekst, do otoczenia. Zapisane w środowisku mogą być później odczytane przez program i traktowane jak dodatkowe dane. Jeśli podana nazwa zmiennej występowała już wcześniej, to nowy tekst przy pisany do tej zmiennej zastąpi tekst poprzedni. Małe litery w nazwie podczas czytanie przez polecenie SET są zamieniane na duże. SET traktuje wszystkie znaki na lewo od znaku równości jak nazwę symbolizującą zmienną, a na prawo jak wartość. Jeżeli przed lub po znaku równość użytkownik napisze spację (wolną przestrzeń), to zostanie ona potraktowana jak część definicji. Polecenie SET= (pusty napis po znaku równości) spowoduje usunięcie pary zmienna i tekstu ze środowiska. SET (bez dodatków) wyświetli wartość zmiennej (przypisany jej tekst).

Jeżeli w przetwarzaniu wsadowym parametrem jest zmienna środowiskowa, wówczas nazwę ujmujemy w parę znaków %, np %katalog%.

Polecenie SET jest wykorzystywane w plikach AUTOEXEC.BAT i CONFIG.SYS dla określenia parametrów środowiska w momencie startu systemu operacyjnego. Polecenie SET w pliku AUTOEXEC.BAT może mieć następującą składnię: SET TEMP=C:\DOS (polecenie SET określa katalog do przechowywania plików roboczych, tworzonych w procesie filtrowania).

Przykład 1.
KROKI.BAT
@ECHO OFF
SET krok=C:\tekst\arkusz\dwa\
COPY %krok%%1 A:\
COPY %krok%%1 A:\nowy
Ustalamy ścieżkę dostępu do interesującego nas katalogu, nadając jej nazwę poleceniem SET, Nazwa, wraz ze ścieżką, będzie umieszczona w środowisku i zapamiętana przez system. Wykorzystuję tę nazwę w komendzie COPY, która będzie kopiować grupy plików do ustalonych katalogów. Wywołanie może mieć następującą postać: KROKI *.BAS *.TXT.

Przykład 2.
KROKIB.BAT
@ECHO OFF
SET krok = %1
COPY %krok%%2 A:\
COPY %krok%%2 A:\nowy
SET krok=
To poprawiony plik wsadowy z przykładu 1. Ścieżka dostępu będzie teraz pierwszym parametrem wywołania. KROKIB.BAT umieści pierwszą ścieżkę w otoczeniu systemu. Po skopiowaniu plików nazwa i tekst zostaną usunięte. Przykładowe wywołanie pliku: KROKIB C:\koresp\basici *.BAS *.TXT.

SHIFT - PRZESUNIĘCIE NAZW PARAMETRÓW

Jak wiadomo parametry wywołania pliku wsadowego są identyfikowane przy pomocy cyfr poprzedzonych znakiem procentu (%1 do %9). W czasie pracy programu znaki %1 - %9 są zastępowane przez rzeczywiste parametry, które zostały wypisane za nazwą programu w linii wywołania. Polecenie SHIFT jest szczególnie użyteczne, gdy chcemy wprowadzić więcej niż 10 parametrów (dziesięć - łącznie z %0, który jest przydzielony wywołanemu plikowi wsadowemu).
Polecenie to przesuwa parametry w linii komend wyrażone za pomocą znaku % tak, że parametr, który do czasu użycia był przedstawiony jako %1, teraz staje się %0, %2 staje się %1 itd. SHIFT można użyć kilkakrotnie, wprowadzając kolejne parametry - zawsze następi przesunięcie o 1, odbywa się to jednak kosztem dostępu do parametrów początkowych - po każdym użyciu SHIFT, %0 jest wyrzucany, robiąc miejsce dla nowo wprowadzonego.

Przykład 1.
Przesunięcia parametrów dokona następujący blok programu, opatrzony etykietą PRZESUW.
:PRZESUW
IF NOT %1==RATUJ.EXE
SHIFT
GOTO INNYBLOK