• Nie Znaleziono Wyników

Podstawowe informacje o skła dni BAT

N/A
N/A
Protected

Academic year: 2021

Share "Podstawowe informacje o skła dni BAT"

Copied!
16
0
0

Pełen tekst

(1)

Strona 1 z 16

BAT

Podstawowe informacje o składni

(2)

Strona 2 z 16

Instrukcja warunkowa (1)

Niemal wszystkie wykonywane programy podczas pracy są "zmuszane przez użytkownika" do podejmowania pewnych decyzji. Program niejednokrotnie musi decydować jakiego rodzaju informacje powinien wyświetlić, czy w danym momencie zareagować na klawisze naciskane na klawiaturze, jaką operację należy wykonać, czy zakończyć swoje działanie, itp.

Do podejmowania w programach tego typu decyzji służy instrukcja warunkowa. W pliku wsadowym instrukcja ta może mieć jedną z trzech postaci.

IF EXIST plik komenda albo

IF NOT EXIST plik komenda

PRZYKŁAD:

@ECHO OFF

IF EXIST lista.txt COPY lista.txt lista.bak > NUL

(3)

Strona 3 z 16

Instrukcja warunkowa (2)

Druga postać instrukcji warunkowej dotyczy porównywania napisów:

IF "napis1" == "napis2" komenda albo

IF NOT "napis1" == "napis2" komenda

(4)

Strona 4 z 16

Instrukcja ETYKIETA :Etykieta

definiuje tzw. etykietę w pliku wsadowym. Etykieta to inaczej mówiąc słowna nazwa linii pliku, umieszczając instrukcję etykiety nazywamy linię pliku podaną po znaku ':' nazwą. Nazwa

etykiety powinna być jednym słowem nie zawierającym odstępów (można połączyć słowa

znakiem '_') i powinna rozpoczynać się tuż za znakiem ':', nie należy rozdzielać nazwy i znaku ':' odstępami.

Podczas wykonywania pliku wsadowego interpreter pomija linie pliku zawierające etykiety (podobnie jak ma ty miejsce w przypadku polecenia komentarza REM), instrukcji tej nie wykonuje się, służy ona jedynie do przenoszenia wykonywania pliku przez instrukcję skoku GOTO:

GOTO Etykieta PRZYKŁAD:

@ECHO OFF

IF EXIST lista.txt GOTO Usuwaj ECHO Nie ma takiego pliku...

GOTO Koniec

(5)

Strona 5 z 16

Argumenty plików wsadowych

Podobnie jak polecenia i programy pliki wsadowe można uruchamiać z argumentami. Do poszczególnych argumentów pliku można się od odwoływać za pomocą symboli %1, %2, ...,

%9, które reprezentują odpowiednio pierwszy, drugi, ..., dziewiąty argument pliku.

Przykład:

@ECHO OFF

IF EXIST %1 GOTO Usuwaj

ECHO Plik %1 nie istnieje...

GOTO Koniec

:Usuwaj

ECHO Usuwanie pliku %1 ...

DEL %1 > NUL

ECHO Wykonane...

(6)

Strona 6 z 16

Przykład 2:

IF "%1" == "/?" GOTO Informacja IF "%1" == "" GOTO BrakArgumentu

IF NOT "%2" == "" GOTO ZbytWieleArgumentow

IF EXIST %1 GOTO Usuwaj

(7)

Strona 7 z 16

Instrukcja CALL

Jak wspomniano na początku w pliku wsadowym można używać dowolnych poleceń

wewnętrznych i programów wykonywalnych (com i exe). Polecenie pliku wsadowego nie może natomiast być plikiem wsadowym. Uruchomienie w pliku wsadowym innego pliku wsadowego wymaga zastosowania polecenia:

CALL plik_wsadowy [argumenty]

PRZYKŁAD:

IF "%1" == "" GOTO Koniec

CALL myBat.bat %1

(8)

Strona 8 z 16

Instrukcja SHIFT

Do tej pory stosowane były instrukcje skoku zawsze do etykiety położonej "poniżej" w pliku wsadowym. Istnieje możliwość przeniesienia wykonywania pliku do linii wcześniejszej, czyli

"powyżej" - tego typu konstrukcję, tzn. etykietę oraz występującą poniżej instrukcję skoku do tej właśnie etykiety nazywamy pętlą.

Pętle często stosuje się w połączeniu z instrukcją SHIFT. Polecenie SHIFT wykonuje tzw.

przesunięcie argumentów, tzn. argument pierwszy %1 zastępowany jest przez argument drugi

%2, argument drugi %2 zastępowany jest przez argument trzeci %3, itd. Ogólnie: argument %N

zastępowany jest przez argument %(N+1).

(9)

Strona 9 z 16

UWAGA:

W wyniku wykonania polecenia argument pierwszy pliku wsadowego jest bezpowrotnie tracony - nie ma możliwości odwołania się do tego argumentu. Demonstruje to poniższy przykład:

@ECHO OFF

ECHO Arg1=[%1] Arg2=[%2] Arg3=[%3] Arg4=[%4]

SHIFT

ECHO Arg1=[%1] Arg2=[%2] Arg3=[%3] Arg4=[%4]

SHIFT

ECHO Arg1=[%1] Arg2=[%2] Arg3=[%3] Arg4=[%4]

SHIFT

ECHO Arg1=[%1] Arg2=[%2] Arg3=[%3] Arg4=[%4]

SHIFT

ECHO Arg1=[%1] Arg2=[%2] Arg3=[%3] Arg4=[%4]

SHIFT

ECHO Arg1=[%1] Arg2=[%2] Arg3=[%3] Arg4=[%4]

Tak wygląda wykonanie pliku z pięcioma argumentami:

C:\TEMP>argumen.bat list1.txt list2.txt list3.txt list4.txt list5.txt Arg1=[list1.txt] Arg2=[list2.txt] Arg3=[list3.txt] Arg4=[list4.txt]

Arg1=[list2.txt] Arg2=[list3.txt] Arg3=[list4.txt] Arg4=[list5.txt]

Arg1=[list3.txt] Arg2=[list4.txt] Arg3=[list5.txt] Arg4=[]

Arg1=[list4.txt] Arg2=[list5.txt] Arg3=[] Arg4=[]

Arg1=[list5.txt] Arg2=[] Arg3=[] Arg4=[]

Arg1=[] Arg2=[] Arg3=[] Arg4=[]

(10)

Strona 10 z 16

PRZYKŁAD 2:

:Start

IF "%1" == "" GOTO Koniec ECHO %1

SHIFT

GOTO Start

:Koniec

(11)

Strona 11 z 16

Instrukcja warunkowa (3)

I to chyba jest ten moment, który nazwać można "wyższą szkołą jazdy"...

Ale najpierw trochę niezbędnej teorii.

Kiedy program kończy swoje działanie ma możliwość poinformowania systemu operacyjnego o stanie swojego zakończenia. Przekazana informacja jest dosyć uboga albowiem może być

zaledwie nieujemną liczbą całkowitą, ale o tym, że w świecie komputerów jedna liczba może być informacją bardzo obszerną nikogo przekonywać nie trzeba. Liczbę tą nazywamy kodem wyjścia programu.

Z możliwości tej programy nie zawsze korzystają i często program nie pozostawia po sobie żadnej informacji - wówczas system operacyjny traktuje taki stan zakończenia jako poprawny i przyjmuje, że zakończony program pozostawił po sobie kod zero (często mówimy też, że

program zakończył się z kodem zero). Nie oznacza to wcale, że liczby różne od zera oznaczają błędne zakończenie programu; jest to często przyjmowana w informatyce reguła na mocy której liczba zero oznacza poprawne wykonanie określonej operacji.

Instrukcja warunkowa w trzeciej postaci służy właśnie do sprawdzania stanu zakończenia ostatnio wykonanego programu lub komendy:

IF ERRORLEVEL kod_wyjścia komenda albo

IF NOT ERRORLEVEL kod_wyjścia komenda

(12)

Strona 12 z 16

Kod wyjścia jest tutaj liczbą naturalną, komenda poleceniem do wykonania. Instrukcja w tej postaci wykona podaną komendę tylko wówczas, gdy ostatnio wykonywane polecenie zwróciło kod wyjścia większy lub równy podanej liczbie (w przypadku użycia NOT mniejszy od podanej liczby).

Z tej postaci instrukcji warunkowej korzystać będziemy wyłącznie przy sprawdzaniu kodu wyjścia polecenia CHOICE, które stosuje się w systemie MS-DOS do zadawania różnego rodzaju pytań. Składnia polecenia jest następująca:

CHOICE [/C:odpowiedzi] [/N] [/T:Z,XY] [tekst]

PRZYKŁAD:

ECHO [ 1 ]. Norton Commander ECHO [ 2 ]. Turbo Pascal

ECHO [ 3 ]. Windows ECHO [ Q ]. Zakończ

CHOICE /C:123Q /N "Wybierz program do uruchomienia : "

IF ERRORLEVEL 4 GOTO Koniec IF ERRORLEVEL 3 GOTO Windows IF ERRORLEVEL 2 GOTO Pascal

….

(13)

Strona 13 z 16

Instrukcja iteracyjna FOR

Instrukcje iteracyjne (powtarzające, zwane też pętlami) służą w językach programowania do wielokrotnego wykonywania podobnych czynności. Ogólnie dzieli się instrukcje iteracyjne na pętle o znanej lub niemożliwej do przewidzenia z góry liczbie powtórzeń. Sformułowanie "o znanej liczbie powtórzeń" wymaga pewnego wyjaśnienia. Przez znaną ilość iteracji rozumie się tu ilość znaną nie w momencie pisania programu lub pliku wsadowego, tylko ilość znaną w momencie rozpoczęcia wykonywania pętli. I tak na przykład: jeżeli pętla zostanie powtórzona tyle razy ile plików zawiera katalog bieżący, to mimo iż nie możemy przewidzieć ile plików będzie zawierał katalog traktujemy tą pętlę jako pętlę o znanej liczbie powtórzeń - liczba tą

będzie bowiem znana w momencie rozpoczynania pętli. Również omówiony wcześniej przykład

pliku wsadowego, który usuwał wszystkie pliki podane jako argumenty jest przykładem pętli o

znanej liczbie powtórzeń - plik można uruchomić z każdą liczbą argumentów, niemniej jednak

liczba ta zawsze jest znana w momencie uruchomienia pliku wsadowego.

(14)

Strona 14 z 16

A oto przykład pętli o niemożliwej do ustalenia z góry liczbie powtórzeń:

:Start

CHOICE /C:TN "Powtórzyć ?"

IF ERRORLEVEL 2 GOTO Koniec GOTO Start

:Koniec

Przerwanie pętli następuje w momencie naciśnięcia klawisza 'N' - nie można z góry przewidzieć ile razy użytkownik wybierze

odpowiedź 'T'.

(15)

Strona 15 z 16

Instrukcja iteracyjna FOR pliku wsadowego jest pętlą o znanej liczbie powtórzeń i następującej składni:

FOR %%X IN (lista) DO komenda

Argument lista jest obowiązkowy i zawiera pooddzielane znakami odstępu nazwy plików - w nazwach tych mogą występować znaki wieloznaczne '?' i '*'. Po znakach '%%' pojemy tzw.

zmienną - odpowiednik niewiadomej w matematyce. Zmienna ta będzie kolejno przybierać wszystkie możliwe wartości spośród wartości podanych na liście (lista). Dla każdej możliwej wartości zmiennej X zostanie wykonane polecenie komenda.

Rozważmy przykład:

FOR %%A IN (1 2 3) DO ECHO %%A

zmienna A przybierze (otrzyma) wartość "1" a następnie nastąpi wykonanie polecenia ECHO. Po wykonaniu komendy zmienna A otrzyma wartość "2" i ponownie nastąpi wykonanie komendy. po jej

zakończeniu zmienna A otrzyma wartość "3" i zostanie wykonana

komenda. Na tym zakończy się wykonywanie polecenia FOR.

(16)

Strona 16 z 16

PRZYKŁAD 2:

Polecenie

FOR %%A IN (*.txt *.bak) DO COPY %%A C:\TEMP

skopiuje wszystkie pliki z katalogu bieżącego z rozszerzeniami

txt lub bak do podanego katalogu C:\TEMP.

Cytaty

Powiązane dokumenty

Zajęcia rozszerzające, przygotowujące do pracy w Policji w lutym odbywały się poza stałym miejscem do realizacji programu. Uczniowie w ramach przygotowań do Turnieju

(4p.) Napisać skrypt, który wszystkie pliki z przyrostkiem ~ (np. plik.txt~ ), skopiuje (jeżeli takie są) do katalogu BACKUP w bieżącym katalogu.. Jeżeli katalog BACKUP

Agnieszka Ozimek jest zatrudniona jako adiunkt naukowo-dydaktyczny na Wydziale Architektury Politechniki Krakowskiej, w Instytucie Architektury Krajobrazu, w Zakładzie

Dla każdego pliku błędnego możliwe jest pobranie logu błędów w formacie .txt, który wskaże na numer linii (licząc od nagłówka) w pliku oraz opis błędu.

- określa, czy znajdujące się z tyłu gniazdo MIDI OUT/THRU (rys. W przypadku ustawienia na THRU, informacje wchodzące do gniazda MIDI IN A są retransmitowane przez gniazdo

Przed rozpoczęciem prac budowalnych nastąpi zabezpieczenie wierzchniej (organicznej) warstwy terenu w tzw. Zdjęta warstwa ziemi będzie odkładana w osobne miejsce,

W kolejnym okienku wyświetlana jest informacja o pobieraniu przez e-Podpis danych z http://scsa.cui.pl/webstart/lib i http://scsa.cui.pl/webstart - należy zaznaczyć

TERMIN DODATKOWY - W szczególnych przypadkach losowych lub zdrowotnych, uniemożliwiających przystąpienie do egzaminu maturalnego z danego przedmiotu lub przedmiotów w części