2 DOS Programowanie wsadowe

background image

II. Programowanie wsadowe DOS/Windows

1

II. Programowanie wsadowe DOS/Windows


Instrukcj

ę

przygotowano na podstawie materiałów udost

ę

pnionych przez kolegów z Zakładu

Sterowania Wydziału Elektrycznego (Obecnie oryginał instrukcji znajduje si

ę

na stronie

http://www.ee.pw.edu.pl/~graniszw), plików pomocy do systemu Windows oraz materiałów własnych.

1. Wst

ę

p

Program wsadowy jest to ci

ą

g polece

ń

trybu linii komend lub wywoła

ń

programów zapisany w pliku

tekstowym o rozszerzeniu

.bat

Celem programowania wsadowego jest:

przyspieszenie pracy

personalizacja

ś

rodowiska systemu operacyjnego

W j

ę

zyku programowania wsadowego mo

ż

na stosowa

ć

wszystkie komendy dost

ę

pne w trybie linii

komend. Do sterowania działaniem programu wsadowego słu

żą

komendy steruj

ą

ce:

call

- uruchamia programu wsadowego z poziomu innego programu wsadowego, a

nast

ę

pnie powrót do programu

ź

ródłowego (odpowiednik procedury w j

ę

zykach

wy

ż

szego rz

ę

du)

echo

- wy

ś

wietla komunikaty na ekranie, oraz mo

ż

e słu

ż

y

ć

do wł

ą

czania lub wył

ą

czania

wy

ś

wietlania komunikatów

for

- powtarza komend

ę

dla zestawu zmiennych

goto

- przechodzi do innej cz

ęś

ci programu

If

- wykonuje komendy w zale

ż

no

ś

ci od spełnienia warunku

pause

- zatrzymuje wykonanie programu do czasu wci

ś

ni

ę

cia dowolnego klawisza

rem

- komentarz

shift

- przesuwa parametry programu (

%9



%8,%8



%7 itd.)

W dalszej cz

ęś

ci instrukcji zostan

ą

szczegółowo omówione powy

ż

sze instrukcje.


Informacje o sposobie wywołania komendy uzyskuje si

ę

poprzez wpisanie nazwy komendy z

parametrem

/?

np.:

if /?

. Nazwy programów wsadowych podlegaj

ą

tym samym ograniczeniom,

jak nazwy plików w systemie - dopuszczalne s

ą

długie nazwy. Programy wsadowe uruchamia si

ę

podaj

ą

c w trybie interaktywnym nazw

ę

pliku wsadowego (najlepiej ł

ą

cznie z rozszerzeniem). Plik

wsadowy mo

ż

na tak

ż

e uruchomi

ć

w trybie okienkowym wybieraj

ą

c go poprzez podwójne (lub

jednokrotne - zale

ż

nie od ustawie

ń

) klikni

ę

cie klawiszem myszki - tak jak ka

ż

dy inny program.

Zatrzyma

ć

wykonanie programu wsadowego mo

ż

na poprzez naci

ś

ni

ę

cie kombinacji klawiszy

Ctrl+S

lub

Pause

. Wykonanie programu jest kontynuowane po naci

ś

ni

ę

ciu dowolnego klawisza.

Przerwa

ć

działanie programu wsadowego mo

ż

na poprzez naci

ś

ni

ę

cie kombinacji klawiszy

Ctrl+C

lub

Pause

.

2. U

ż

ywanie Notatnika do tworzenia skryptów.

Skrypty s

ą

plikami tekstowymi, wi

ę

c do ich tworzenia mo

ż

na u

ż

ywa

ć

programu

Notatnik

. Nale

ż

y

jednak uwa

ż

a

ć

na jedn

ą

cech

ę

tego programu: podczas zapisywania dodaje on rozszerzenie

txt

do

nazwy programu, np. zapisuj

ą

c pod nazw

ę

skrypt.bat

program zapisze

skrypt.bat.txt

,

czyli NIE jest to skrypt. Aby

Notatnik

nie dodawał rozszerzenia, to przy pierwszym zapisie (tylko

wtedy podajemy nazw

ę

) oprócz wpisania nazwy i rozszerzenia, np.

skrypt.bat

nale

ż

y na oknie

background image

II. Programowanie wsadowe DOS/Windows

2

dialogowym wybra

ć

opcj

ę

Wszystkie pliki

w okienku

Zapisz jako typ

. Uchroni to

przed dodaniem rozszerzenia

txt

.

Przy przegl

ą

daniu plików za pomoc

ą

standardowego narz

ę

dzia

„Mój komputer”

s

ą

ukryte

znane przez system operacyjny rozszerzenia plików, co utrudnia podejrzenie prawdziwego

rozszerzenia pliku. Aby wył

ą

czy

ć

t

ą

opcj

ę

, nale

ż

y wybra

ć

z menu

Narz

ę

dzia



Opcje

folderów...

a nast

ę

pnie na zakładce

Widok

odznaczy

ć

opcj

ę

Ukryj rozszerzenia

plików znanych typów

.

3. Wy

ś

wietlanie komunikatów

Komunikaty w programach wsadowych mo

ż

na wy

ś

wietla

ć

korzystaj

ą

c z instrukcji

echo

. Składnia

tego polecenia:

echo <Tre

ść

komunikatu>

Aby wy

ś

wietli

ć

pust

ą

lini

ę

nale

ż

y u

ż

y

ć

polecenia

echo.

(z kropk

ą

na ko

ń

cu, bez spacji).

Przykład

echo Program przesuwa pliki z katalogu KAT1 do KAT2

move KAT1 KAT2

dir KAT2


Aby dany tekst nie wy

ś

wietla

ć

na ekranie, ale aby zapisa

ć

do pliku, nale

ż

y posłu

ż

y

ć

si

ę

symbolami

przekierowania

>

oraz

>>

omówionymi w instrukcji do pierwszego

ć

wiczenia.


W celu wy

ś

wietlania dłu

ż

szych tekstów, korzystniej jest zapisa

ć

tre

ść

w pliku tekstowym i wy

ś

wietli

ć

go u

ż

ywaj

ą

c instrukcji

type

- przyspiesza to prac

ę

, szczególnie w sieciach.

Komenda

echo

mo

ż

e by

ć

u

ż

yta do ograniczenia wy

ś

wietlania wykonywanych instrukcji programu. I

tak, aby wył

ą

czy

ć

wy

ś

wietlanie wykonywanych instrukcji nale

ż

y u

ż

y

ć

instrukcji:

echo off

Aby wł

ą

czy

ć

wy

ś

wietlanie wykonywanych instrukcji:

echo on

Efekt podobny do u

ż

ycia

echo off

dla pojedynczej instrukcji mo

ż

na osi

ą

gn

ąć

poprzedzaj

ą

c

instrukcj

ę

znakiem

@

. Warto wspomnie

ć

,

ż

e wywołuj

ą

c polecenie

echo off

pojawi si

ę

na ekranie

ta instrukcja (bo „echo” nie jest jeszcze wył

ą

czone), dlatego najcz

ęś

ciej jest wywoływane polecenie

@

echo off

. Zazwyczaj nie jest po

żą

dane wy

ś

wietlanie poszczególnych polece

ń

ze skryptu,

dlatego te

ż

wi

ę

kszo

ść

skryptów b

ę

dzie si

ę

zaczyna

ć

od tego polecenia.

Przykład

@echo off

echo Program kopiuje pliki tekstowe z katalogu KAT1 do

KAT2

copy KAT1 KAT2

dir KAT2

background image

II. Programowanie wsadowe DOS/Windows

3

4. Komenda

pause

Zatrzymanie programu mo

ż

na wymusi

ć

korzystaj

ą

c z komendy

pause

. Instrukcja

pause

wy

ś

wietla

komunikat

Naci

ś

nij dowolny klawisz aby kontynuowa

ć

...

a nast

ę

pnie oczekuje na wci

ś

ni

ę

cie dowolnego klawisza.

Przykład

@echo off

echo Program kasuje pliki tekstowe w KAT1

echo Zaczynam kasowa

ć

...

pause

del KAT1\*.txt

cls

dir KAT1

W celu pomini

ę

cia wy

ś

wietlania komunikatu, wyj

ś

cie komendy

pause

mo

ż

na przekierowa

ć

na

wyj

ś

cie puste:

nul

, tak jak na poni

ż

szym przykładzie:

echo Naci

ś

nij dowolny klawisz

pause > nul

Ć

wiczenia do wykonania

1. W katalogu, do którego masz prawo do zapisu, utwórz skrypt o nazwie

a.bat

2. Skrypt ma utworzy

ć

nast

ę

puj

ą

c

ą

struktur

ę

katalogów:

.

kat1

kat2

podkatalog jeden

(prosz

ę

zachowa

ć

spacj

ę

w nazwie podkatalogu)

3. W ka

ż

dym podkatalogu prosz

ę

utworzy

ć

plik

nazwa.txt

, który b

ę

dzie zawierał

ś

cie

ż

k

ę

do

tego katalogu (nale

ż

y wykorzysta

ć

polecenie

cd

i przekierowanie strumienia)

5. Etykieta i skok do etykiety

goto

Etykieta jest to nazwa danego wiersza w skrypcie. Etykiety definiuje si

ę

pisz

ą

c nazw

ę

etykiety

poprzedzon

ą

dwukropkiem np.:

:etykieta

Poprzez etykiety i instrukcje skoku

goto

mo

ż

na zmieni

ć

kolejno

ść

wykonywania instrukcji programu.

Składnia polecenia skoku wygl

ą

da nast

ę

puj

ą

co:

goto etykieta

Przykład:

echo Zaraz zostanie wywołana instrukcja skoku

background image

II. Programowanie wsadowe DOS/Windows

4

goto et1

echo To polecenie zostanie pomini

ę

te

:et1

6. Programy z parametrami i polecenie

shift

Programy wsadowe mog

ą

by

ć

wywoływane z parametrami tak jak zwykłe programy/polecenia, np. dla

polecenia copy

plik1 plik2

pierwszym argumentem jest

plik1

, a drugim

plik2

. Dost

ę

p do

parametrów z poziomu programu wsadowego odbywa si

ę

przez u

ż

ycie symboli %0 do %9. Symbol

%0 oznacza nazw

ę

wykonywanego programu wsadowego. Symbole od %1 do %9 odpowiadaj

ą

kolejnym parametrom. W sposób prosty mo

ż

na si

ę

odwoła

ć

do dziewi

ę

ciu parametrów.

Przykład

@echo off

echo Program kopiuje pliki tekstowe

pause

copy %1\*.txt %2

cls

dir %2 /p

Aby móc odczyta

ć

kolejne parametry NIE mo

ż

na posłu

ż

y

ć

si

ę

symbolem

%10

, poniewa

ż

przez

system zostanie to zrozumiane jako parametr pierwszy, do którego zostanie doklejone 0, czyli dla
wywołania:

Skrypt.bat Ala Ola 4 5 6 7 8 9 10 11

parametry b

ę

d

ą

interpretowane w nast

ę

puj

ą

cy sposób

%1 = Ala

%10 = Ala0

Aby móc korzysta

ć

z kolejnych parametrów nale

ż

y u

ż

y

ć

polecenia

shift

, które przesuwa kolejno

ść

argumentów o jeden, tzn. parametr

%1

staje si

ę

parametrem

%0

, parametr

%2

staje si

ę

%1

itd.,

natomiast niedost

ę

pny wcze

ś

niej parametr dziesi

ą

ty staje si

ę

parametrem

%9

(poprzednia warto

ść

parametru

%0

zostanie „skasowana”).

Przykład

@echo off

echo %0

shift

echo %0

shift

echo %0

Po wywołaniu skryptu poleceniem

Skrypt.bat Ala Ola Ela

wy

ś

wietli si

ę

nast

ę

puj

ą

cy wynik:

Skrypt.bat

Ala

background image

II. Programowanie wsadowe DOS/Windows

5

Ola

7. Instrukcja warunkowa

if

W programach wsadowych mo

ż

na u

ż

ywa

ć

instrukcji warunkowej

if

, której ogólna zasada sprowadza

si

ę

do sprawdzenia okre

ś

lonego warunku logicznego i przy jego spełnieniu wykonania dowolnej

instrukcji.

if [not] errorlevel numer instrukcja

(Nawiasy [] oznaczaj

ą

cz

ęść

opcjonaln

ą

.)

Ta posta

ć

instrukcji

if

wykona instrukcj

ę

instrukcja

je

ż

eli kod wyj

ś

ciowy z poprzedniego

programu

(errorlevel

) [nie] jest mniejszy ni

ż

numer.

Przykład

copy nie_ma_tego_pliku.txt plik2.txt

if errorlevel 1 echo Nie udało si

ę

skopiowa

ć

if [not] ci

ą

g1==ci

ą

g2 instrukcja

Wykonanie instrukcji

instrukcja

, je

ż

eli ci

ą

g znaków

ci

ą

g1

[nie] jest równy ci

ą

gowi

ci

ą

g2

.

Aby ustrzec si

ę

przed bł

ę

dami najlepiej jest porównywa

ć

ci

ą

gi znaków wzi

ę

te w cudzysłów. Umo

ż

liwi

to porównywanie pustego ci

ą

gu znaków (dwa cudzysłowy obok siebie) oraz ci

ą

gów znaków ze

spacjami. Je

ż

eli jeden z ci

ą

gów znaków jest parametrem wej

ś

ciowym, to mo

ż

e (ale nie musi) by

ć

wzi

ę

ty w cudzysłów, wówczas ci

ą

g znaków b

ę

dzie w "podwójnym cudzysłowie". Aby si

ę

przed tym

ustrzec, nale

ż

y odwoływa

ć

si

ę

do parametru poprzez

%~1

(znak tylda ~) – wi

ę

cej na ten temat w

dalszej cz

ęś

ci instrukcji.

Przykład

if "%~1"=="kopiuj" goto FCOPY

if "%~1"=="przesun" goto FMOVE

goto EXIT

:FCOPY

copy KAT1 KAT2

goto EXIT

:FMOVE

move KAT1 KAT2

:EXIT

if [not] exist nazwa_pliku instrukcja

Wykonanie instrukcji

instrukcja

je

ż

eli [nie] istnieje plik:

nazwa_pliku

.

Ć

wiczenia do wykonania

1. W katalogu, w którym utworzyłe

ś

skrypt

a.bat

, utwórz skrypt o nazwie

b.bat

2. Skrypt musi by

ć

wywoływany z jednym parametrem. Je

ż

eli uruchomiono skrypt bez podania

parametru, wówczas skrypt ma wy

ś

wietli

ć

ostrze

ż

enie i zako

ń

czy

ć

działanie.

background image

II. Programowanie wsadowe DOS/Windows

6

3. W zale

ż

no

ś

ci od warto

ś

ci tego argumentu skrypt ma wykona

ć

nast

ę

puj

ą

ce działania:

dla

a

– wypisa

ć

na ekranie zawarto

ść

bie

żą

cego katalogu

dla

b

– otworzy

ć

w domy

ś

lnej przegl

ą

darce stron

ę

wydziału elektrycznego

dla c – zapisa

ć

do pliku o nazwie 000.txt</I> bie

żą

c

ą

dat

ę

i godzin

ę

4. W przypadku, gdy argument nie jest równy

ż

adnemu z powy

ż

szych, skrypt ma wy

ś

wietli

ć

odpowiedni komunikat o bł

ę

dzie i po naci

ś

ni

ę

ciu dowolnego klawisza skrypt ma zako

ń

czy

ć

działanie.

8. Instrukcja

for

FOR [opcja] [%% | %]x IN (zbiór) DO polecenie

Instrukcja

for

powtarza komend

ę

dla ka

ż

dej pozycji w zadanym zbiorze, przypisuj

ą

c danej zmiennej

x

kolejne warto

ś

ci z tego zbioru. W ten sposób umo

ż

liwia ona np. uruchomienie okre

ś

lonego

polecenia dla ka

ż

dego pliku znajduj

ą

cego si

ę

w zbiorze.

Zmienna

x

(mo

ż

e to by

ć

oczywi

ś

cie inna nazwa) jest zmienn

ą

steruj

ą

c

ą

. W przypadku, gdy komenda

for

jest wpisywana w linii polece

ń

, to nazwa zmiennej musi by

ć

poprzedzona jednym znakiem

%

. W

przypadku, gdy komenda ta znajduje si

ę

w pliku wsadowym, wymagane jest poprzedzenie jej

%%

.

FOR %I IN (C:\*.*) DO @echo %I

To polecenie wy

ś

wietli list

ę

plików (tylko plików) o dowolnej nazwie z katalogu głównego

c:\

. Prosz

ę

zauwa

ż

y

ć

znak

@

przed poleceniem

echo

: bez tego znaczka za ka

ż

dym razem pojawiałoby si

ę

wykonywane polecenie, a nast

ę

pnie wynik tego poleceni. Znak po prostu

@

eliminuje wy

ś

wietlanie

polecenia.
Skrypt zawieraj

ą

cy t

ę

instrukcj

ę

mógłby wygl

ą

da

ć

tak:

@echo of

FOR %%I IN (C:\*.*) DO echo %%I

echo on

W tym przypadku nale

ż

y zwróci

ć

uwag

ę

na fakt poprzedzenia zmiennej

I

dwoma znakami procent.

Ponadto przed poleceniem

echo

nie ma znaku

@

, poniewa

ż

wy

ś

wietlanie polecenia zostało

wył

ą

czone wcze

ś

niej poleceniem

echo off

.

FOR /D %I IN (C:\*.*) DO @echo %I

Przeł

ą

cznik /D powoduje,

ż

e zamiast plików wyszukiwane s

ą

katalogi.

FOR /R "%USERPROFILE%\Menu Start" %I IN (*.*) DO @echo %I

Przeł

ą

cznik

/R

powoduje,

ż

e wyszukiwanie plików (brak przeł

ą

cznika

/D

) jest rozpoczynane od

katalogu

"%USERPROFILE%\Menu Start"

i kontynuowane we wszystkich podkatalogach.

Zmienna

ś

rodowiskowa

%USERPROFILE%

okre

ś

la

ś

cie

ż

k

ę

dost

ę

pu do katalogu z profilem

u

ż

ytkownika, mo

ż

e by

ć

rozwini

ę

ta do

C:\Documents and Settings\user

. Dodanie

\Menu Start

spowodowało,

ż

e

ś

cie

ż

ka startowa wygl

ą

da nast

ę

puj

ą

co

C:\Documents and

Settings\user\Menu start

. Poniewa

ż

w nazwie katalogu

Menu start

jest spacja,

dlatego konieczne jest wzi

ę

cie

ś

cie

ż

ki w cudzysłów.

background image

II. Programowanie wsadowe DOS/Windows

7

Instrukcja

FOR

umo

ż

liwia ponadto traktowanie zbioru jako zbioru liczb całkowitych (przeł

ą

cznik

/L

)

oraz przetwarzanie danych z pliku (przeł

ą

cznik

/F

). Zainteresowanych odsyłam do pliku pomocy dla

instrukcji

FOR

.

9. Zaawansowane odwoływanie si

ę

do parametrów wywoływania

skryptu.

Je

ż

eli parametrem wywołania skryptu

%1

jest nazwa pliku, a program na tej podstawie musi okre

ś

li

ć

nazw

ę

katalogu, "czyst

ą

" nazw

ę

pliku i oddzielnie rozszerzeniem pliku, wówczas nale

ż

y posłu

ż

y

ć

si

ę

nast

ę

puj

ą

c

ą

składni

ą

:

%~1

- rozwija %I usuwaj

ą

c wszystkie obejmuj

ą

ce cudzysłowy (")

%~f1

- rozwija %I do pełnej nazwy

ś

cie

ż

ki

%~d1

- rozwija %I tylko do litery dysku

%~p1

- rozwija %I tylko do

ś

cie

ż

ki

%~n1

- rozwija %I tylko do nazwy pliku

%~x1

- rozwija %I tylko do rozszerzenia pliku

Charakterystyczny jest tutaj znak ~ (tylda), który usuwa cudzysłowy.

Przykład

@echo off

if not exist "%~1" goto end

echo copy %1 "%~d1%~p1%~n1.bak"

:end

echo on

Ć

wiczenia do wykonania

1.

W katalogu, w którym utworzyłe

ś

skrypt

a.bat

, utwórz skrypt o nazwie c

.bat

2. Skrypt ma utworzy

ć

w katalogu bie

żą

cym plik o nazwie

wynik.log

, do którego zapisze

bie

żą

c

ą

godzin

ę

3. Skrypt ma wyszuka

ć

wszystkie pliki o rozszerzeniu

txt

znajduj

ą

ce si

ę

w katalogu bie

żą

cym i

jego podkatalogach.

4. Dla ka

ż

dego znalezionego pliku skrypt ma wykona

ć

nast

ę

puj

ą

ce trzy rzeczy:

a) wypisa

ć

nazw

ę

pliku wraz ze

ś

cie

ż

k

ą

dost

ę

pu na ekranie

b) dopisa

ć

nazw

ę

pliku wraz ze

ś

cie

ż

k

ą

dost

ę

pu do utworzonego wcze

ś

niej pliku

wynik.log

c) skopiowa

ć

plik do tego samego katalogu pod t

ą

sam

ą

nazw

ę

, ale z innym

rozszerzeniem:

bak


Wyszukiwarka

Podobne podstrony:
Programowanie Wsadowe Wstęp, Informatyka, DOS
Programowanie Wsadowe W DOS I Windows
dos pliki wsadowe
001 wprowadzenie do programowania wsadowego
schemat programowania wsadowego
dos pliki wsadowe
PROGRAMOWANIE WSADOWE, Szkoła, Systemy Operacyjnie i sieci komputerowe, systemy, semestr I, systemy
dos pliki wsadowe
Pisanie i stosowanie programow wsadowych
001 wprowadzenie do programowania wsadowego
Programem wsadowym
Informatyka, Przetwarzanie wsadowe w MS, Przetwarzanie wsadowe w MS-DOS
ub-cw1, Ubezpieczenia - program, dr Anna Doś
Programy DOS w środowisku Windows
Pliki Wsadowe Systemu DOS, Informatyka, DOS
Tryb Wsadowy Przetwarzanie Wsadowe, Informatyka, DOS
Praca W Programie Dos Navigator, Informatyka, DOS

więcej podobnych podstron