background image

WY SZA SZKO A BIZNESU W D BROWIE GÓRNICZEJ

 

Laboratorium : SYSTEMY OPERACYJNE

   

1

 

Przyk ady

 

Przyk adowe skrypty w Windows 2000:  

I.  Chc c  sobie  odrobin 

skomplikowa  wy wietlanie

 

zawarto ci  bie

cego 

folderu zak adamy,  e chcemy by skrypt wy wietli  nam tylko pliki o rozszerzeniach 
.bat  i  .cmd.  Wykorzystamy  do  tego  celu  instrukcj 

For  w

 

poni szej  postaci. 

Dodatkowo wyniki wyszukiwania wy lemy do pliku wy.txt

 

 

for %%f in (*.cmd *.bat) do dir /b %%f >> wy.txt 

 

Po  uruchomieniu  skryptu  widzimy  efekty  jego  dzia ania  w  wierszu  polece ,  a 

tego  chcieliby my  unikn

.  Modyfikujemy  wi c  nasz  skrypt  dodaj c  linie:  @echo 

off na jego pocz tku. Znak @ oznacza,  e równie  i samo polecenie echo off nie 
b dzie widoczne. Poniewa  u yli my symbolu >> przy przekierowaniu do pliku, to 
za  ka dym  razem  nasz  plik  wyj ciowy  jest  zwi kszany  o  nast pne  dane.  Je eli

 

chcemy  tego  unikn

,  mo emy  sprawdza  na  pocz tku  czy  istnieje  taki  plik,  a 

je eli tak to najpierw go usuniemy. Zrealizujemy to instrukcj  If exist wy.txt del /P 
wy.txt
. Prze cznik /P wymusza monitowanie o potwierdzenie usni cia pliku. Teraz 
nasz skrypt wygl da nast puj co:

 

 

@echo off  

If exist wy.txt del /P wy.txt  

for %%f in (*.cmd *.bat) do dir /b %%f >> wy.txt 

 

Teraz dodamy odrobin  interakcji, tzn. sami b dziemy okre la  do jakiego pliku 

b dziemy zapisywa  wyniki. Realizujemy to zmieniaj c nazw  pliku - wy.txt nazw 
argumentu z jakim b dziemy wywo ywa  skrypt: %1

 

@echo off  

If exist %1 del /P %1  

for %%f in (*.cmd *.bat) do dir /b %%f >> %1 

 

Na koniec wykorzystamy mo liwo ci przetwarzania potokowego. Otó  nasz plik 

wyj ciowy  posortujemy  wed ug  kolejno ci  alfabetycznej  i  zapiszemy  go  do 
nast pnego pliku, którego nazw  podamy jako drugi argument. Realizujemy to za 
pomoc  polece  more  i  sort.  Dodajmy  jeszcze  komunikat  informuj cy  o  tym,  e 
wszystko przebieg o pomy lnie:

 

background image

WY SZA SZKO A BIZNESU W D BROWIE GÓRNICZEJ

 

Laboratorium : SYSTEMY OPERACYJNE

   

2

 

 

 

@echo off  

If exist %1 del /P %1  

for %%f in (*.cmd *.bat) do dir /b %%f >> %1 

 

more %1 | sort >%2  

echo Opreacje przebieg y pomy lnie!!! 

 

pause  

II.  W  tym  przyk adzie  chcemy  by  w  przypadku  braku  pliku  który  chcieliby my 

odczyta ,  nie  wy wietli  si  standardowy  komunikat  o  b dzie,  a  zamiast  niego 
móg  si  wy wietli  nasz. Mo na to zrealizowa  w nast puj cy sposób: 

 

 

@echo off  

more %1 2> NUL  

if Errorlevel 0 echo niestety, ale podany plik: "%1" nie 

zosta  odnaleziony...  

 

W drugiej lini skryptu komunikat o ewentualnym b dzie zostanie przekierowany do 
NUL  czyli  do  zbioru  pustego,  co  uniemo liwi  wy wietlenie  go  na  ekranie.  W 
nast pnej lini jest u yty wariant instrukcji If gdzie komenda echo si  wykona je eli 
poprzednie polecenie - w tym przypadku more kod b du wiekszy ni  0.

 

 

III. Nast pny przyk ad: 

 

 

rem przyk ad III  

@echo off  

echo echo wszystko sie udalo! > %2.bat  

 

dir c:\*.txt /s /b | find "readme" | sort /+1 > %1  

call %2  

 

date /t  

date /t >> %1  

 

echo koniec poszukiwan 

 

background image

WY SZA SZKO A BIZNESU W D BROWIE GÓRNICZEJ

 

Laboratorium : SYSTEMY OPERACYJNE

   

3

 

W trzeciej lini zapisujemy nasz komunikat, który stanie si  plikiem wsadowym o 

nazwie  podanej  jako  drugi  argument.  Nast pnie  komenda  dir  wy wietli  wszystkie 
pliki  o  rozszerzeniu  .txt  na  dysku  C  i  wynik  swojego  dzia ania  wy le  do  polecenia 
find,  które  odnajdzie  ci g  znaków  "readme"  w  nazwach  tych  plików.  Nast pnie 
polecenie  sort  posortuje  te  wybrane  nazwy  plików  poczynaj c  od  ich  drugiego 
znaku.  Wynik  tej  operacji  zostanie  wys any  do  pliku,  kórego  nazw  u ytkownik 
poda jako pierwszy argument dla naszego pliku wsadowego. 

IV. Teraz przyk ad wykorzystaniem polecenia AT i warunkowego przetwarzania 

polece .

 

 

@echo off  

for %%f in (\\space \\xxx) do at %%f %1 /interactive 

/every:%2 notepad.exe 2>NULL && ^  

echo Operacja dla %%f sie powiodla !!! || echo Opreacja dla 

%%f sie nie powiodla!!!  

Powy szy  plik  wsadowy  mo e  by  pomocny,  je eliby my  chcieli  zaplanowa 

zadanie  dla  kilku  stanowisk.  Dodatkowo  chcieliby my  uzyka  informacje  czy 
operacja  si  powiod a  czy  nie.  Wykorzystujemy  do  tego  p tle  for  w  postaci  takiej, 
jak  z  przyk adu  pierwszego,  gdzie  w  liscie  podajemy  nazwy  stanowisk.  Argument 
%1  okre la  nam  godzin ,  a  argument  %2  dzie .  Dodatkowo,  je eli  polecenie  at 
wykona  si  pomy lnie  to  wy wietli  si  echo  pierwsze.  Je eli  jednak  at  si  nie 
wykona, to pierwsze echo si  nie wy wietli, co umo liwi wy wietleniu si  drugiemu 
echo.  Poniewa 

linia  z  instrukcj 

For  jest  zad uga  stusujemy  przeniesienie 

polecenia do nast pnego wiersza przypomocy znacznika ^. Je eli za o ymy,  e na 
\\space  mo na  co  zaplanowa ,  a  na  \\xxx  nie,  to  po  uruchomieniu  skryptu  na 
ekranie zobaczymy: 

 

C:\Documents and Settings\mmn>e.bat 12:00 Wt  

Dodano nowe zadanie o identyfikatorze = 1  

Operacja dla \\space sie powiodla !!!  

Odmowa dost pu. 

 

Opreacja dla \\xxx sie nie powiodla!!!  

V. Jako ostatni przyk ad podam nast puj cy skrypt:

 

 

@echo off  

for /l %%f IN (1,1,%2) do net send %1 error%%f > NUL && echo 

komunikat %%f zostal wyslany do %1!  

echo wyslalismy %2 komunikatow  

background image

WY SZA SZKO A BIZNESU W D BROWIE GÓRNICZEJ

 

Laboratorium : SYSTEMY OPERACYJNE

   

4

 

Umo liwia on cykliczne wysy anie komunikatu o coraz to nowym numerze b du 

do  stanowiska,  którego  nazw 

podajemy  jako  drugi  argument,  tyle  razy  ile 

podali my  w  pierwszym  argumencie.  Dodatkowo  wykorzystali my  tu  mechanizm 
warunkowego  przetwarzania  polece  i  tak  w  przypadku  gdy  polecenie  net  send 
zostanie  wykonane  pomy lnie  uruchomi  si  instrukcja  echo.  Przy  korzystaniu  z 
tego  skryptu  nale y  jednak  bra  pod  uwag  cierpliwo 

osoby  po  drugie  stronie.. 

  

Po  uruchomieniu  tego  skryptu  gdzie  nazwa  komputera  jest  SPACE,  a  ilo 
powtórze  wynosi 5 na naszej konsoli w przypadku powodzenia operacji

 

wy wietli 

si : 

 

 

C:\Documents and Settings\mmn>d space 5  

komunikat 1 zostal wyslany do space!  

komunikat 2 zostal wyslany do space!  

komunikat 3 zostal wyslany do space!  

komunikat 4 zostal wyslany do space!  

komunikat 5 zostal wyslany do space!  

wyslalismy 5 komunikatow  

 

Literatura: 

 

  Batch File Command Reference for Windows 2000    

http://www.labmice.net/articles/batchcmds.htm

 

  

http://www.republika.pl/mariuszgerasik