background image

Rozdzia  2
System WINDOWS XP – podstawowe polecenia DOS

Pracownia systemów komputerowych – Piotr Cymerman

41

Przyk adowe rozwi zania poprzednich zada  (zad. 4 i zad. 5)

Zadanie 4.

@ECHO OFF
REM
 **********************************************************
REM Tworzenie folderow podanych jako argumenty pliku wsadowego
REM Obsluga bledow
REM Pomoc dla polecenia
REM **********************************************************

IF "%1"=="/?" GOTO pomoc

:start
IF "%1"=="" GOTO koniec
IF EXIST %1 ECHO Folder [%1] juz istnieje
IF NOT EXIST %1 GOTO utworz
SHIFT
GOTO
 start

:utworz
MD %1
ECHO Utworzono folder [%1]
SHIFT
GOTO
 start

:pomoc
ECHO Skladnia polecenia:
ECHO 12 [/?] nazwa_folderu1 nazwa_folderu2 [...] nazwa_folderuN
ECHO _

:koniec

ród o 14. Tworzenie dowolnej liczby folderów podanych jako argumenty pliku wsadowego – 14.bat

background image

Rozdzia  2
System WINDOWS XP – podstawowe polecenia DOS

Pracownia systemów komputerowych – Piotr Cymerman

42

Zadanie 5.

@ECHO OFF
REM
 Operacje na plikach tekstowych

IF "%1"=="/?" GOTO pomoc
IF "%1"=="" GOTO blad
IF "%1"=="/n" GOTO sprawdz_nowy
IF "%1"=="/u" GOTO usun
IF "%1"=="/c" GOTO sprawdz_kopiuj

:sprawdz_nowy
IF NOT "%1"=="/n" GOTO blad
SHIFT
IF
 "%1"=="" GOTO blad

:plik
IF "%1"=="" GOTO koniec
ECHO _
IF EXIST %1.txt ECHO Plik [%1.txt] juz istnieje
IF NOT EXIST %1.txt GOTO utworz
SHIFT
GOTO
 plik

:utworz
ECHO Wprowadz tekst do pliku [%1.txt]
ECHO Zakoncz edycje kombinacja CTRL+Z, a nastepnie ENTERem
COPY CON %1.txt
SHIFT
GOTO
 plik

:usun
IF NOT EXIST *.txt ECHO Brak plikow tekstowych w folderze biezacym
IF EXIST *.txt ECHO Pliki tekstowe usuniete z folderu biezacego
IF EXIST *.txt DEL *.txt
GOTO koniec

:sprawdz_kopiuj
SHIFT
IF
 "%1"=="" GOTO blad

:kopiuj
IF "%1"=="" GOTO koniec
ECHO _
IF NOT EXIST %1.txt ECHO Brak pliku [%1.txt]
IF EXIST %1.txt ECHO Kopiuje plik [%1.txt] z nazwa [%1(kopia).txt]
IF EXIST %1.txt COPY %1.txt %1(kopia).txt
SHIFT
GOTO
 kopiuj

:blad
ECHO Brak argumentow!
ECHO _

:pomoc
ECHO Skladnia polecenia:
ECHO Tworzenie w biezacym folderze plikow tekstowych:
ECHO 15 [/n] nazwa1 nazwa2 [...] nazwaN
ECHO _
ECHO Usuwanie z folderu biezacego wszystkich plikow tekstowych
ECHO 15 [/u]
ECHO _
ECHO Kopiowanie w folderze biezacym plikow tekstowych
ECHO z dodaniem tekstu "(kopia)" do nazwy kopiowanego pliku
ECHO 15 [/c] nazwa1 nazwa2 [...] nazwaN
ECHO _

:koniec

ród o 15. Zadanie 5 (15.bat) – plik wsadowy z parametrami, argumentami i obs ug  b dów

background image

Rozdzia  2
System WINDOWS XP – podstawowe polecenia DOS

Pracownia systemów komputerowych – Piotr Cymerman

43

wiczenie

 6. Polecenie CALL

Przeanalizuj poni szy kod ( ród o 16) – zwró  uwag ,  e jest podobny do kodu pliku

wsadowego

15.bat

 ( ród o 15) z wyj tkiem miejsc, w których linie s  w kolorze niebieskim:

@ECHO OFF
REM
 **********************************************************
REM Operacje na plikach wsadowych
REM **********************************************************

IF "%1"=="/?" GOTO pomoc
IF "%1"=="" GOTO blad
IF "%1"=="/n" GOTO sprawdz_nowy
IF "%1"=="/u" GOTO usun
IF "%1"=="/c" GOTO sprawdz_kopiuj

:sprawdz_nowy
IF NOT "%1"=="/n" GOTO blad
SHIFT
IF
 "%1"=="" GOTO blad

:plik
IF "%1"=="" GOTO koniec

CALL 16nowy.bat %1

SHIFT
GOTO
 plik

:usun

CALL 16usun.bat

GOTO koniec

:sprawdz_kopiuj
SHIFT
IF
 "%1"=="" GOTO blad

:kopiuj
IF "%1"=="" GOTO koniec

CALL 16kopiuj.bat %1

SHIFT
GOTO
 kopiuj

:blad
ECHO Brak argumentow!
ECHO _

:pomoc
ECHO Skladnia polecenia:
ECHO Tworzenie w biezacym folderze plikow tekstowych:
ECHO 16 [/n] nazwa1 nazwa2 [...] nazwaN
ECHO _
ECHO Usuwanie z folderu biezacego wszystkich plikow tekstowych
ECHO 16 [/u]
ECHO _
ECHO Kopiowanie w folderze biezacym plikow tekstowych
ECHO z dodaniem tekstu "(kopia)" do nazwy kopiowanego pliku
ECHO 16 [/c] nazwa1 nazwa2 [...] nazwaN
ECHO _

:koniec

ród o 16. Zawarto  pliku 16.bat – u ycie polecenia CALL

background image

Rozdzia  2
System WINDOWS XP – podstawowe polecenia DOS

Pracownia systemów komputerowych – Piotr Cymerman

44

Mo na si  domy li ,  e z miejsca, oznaczonego niebieskim kolorem zosta  wyci ty

fragment kodu i umieszczony w odpowiednich plikach (patrz na nazwy przy poleceniu

CALL

w  ródle 16). Zapisz ten kod  ród owy jako plik

16.bat

.

Polecenie

CALL

 do cza (w tym przypadku z tego samego folderu co plik

16.bat

)

odpowiednie pliki, realizuj ce konkretne zadanie. Przyk adowy plik

16nowy.bat

 mo esz

obejrze  poni ej ( ród o 17):

@ECHO OFF
REM **********************************************************
REM Tworzenie w biezacym folderze plikow tekstowych
REM **********************************************************

IF "%1"=="/?" GOTO pomoc
IF "%1"=="" GOTO blad

:start
IF "%1"=="" GOTO koniec
ECHO _
IF EXIST %1.txt ECHO Plik [%1.txt] juz istnieje
IF NOT EXIST %1.txt GOTO utworz
SHIFT
GOTO start

:utworz
ECHO Wprowadz tekst do pliku [%1.txt]
ECHO Zakoncz edycje kombinacja CTRL+Z, a nastepnie ENTERem
COPY CON %1.txt
SHIFT
GOTO start

:blad
ECHO Brak argumentow!
ECHO _

:pomoc
ECHO Skladnia polecenia:
ECHO Tworzenie w biezacym folderze plikow tekstowych:
ECHO 16nowy [/?] nazwa1 nazwa2 [...] nazwaN
ECHO _

:koniec

ród o17. Zawarto  pliku 16nowy.bat.

Dlaczego w tym pliku jest wi cej ni  zosta o usuni te ze  ród a 15? Dlatego,  e ten

plik powinien by  autonomiczny, tzn. powinien oprócz tworzenia nowych plików tekstowych,
zapewnia  równie  obs ug  b dów oraz udost pnia  pomoc w sytuacji, gdyby  chcia
uruchomi  go oddzielnie. Program

16.bat

czy w sobie trzy zadania (tworzenie, usuwanie i

kopiowanie plików tekstowych), obs uguje b dy sk adni, zawiera pomoc, ale pliki do czane
do tego kodu równie  takie zadania powinny spe nia . Zauwa ,  e z poziomu pliku

16.bat

 nie

ma mo liwo ci uruchomienia pliku

16nowy.bat

 bez argumentu (bo obs uga b dów z poziomu

pliku g ównego to zapewnia), wi c implementacja tego zadania w pliku

16nowy.bat

wydawa aby si  zb dna – tak, je li mia by by  to tylko przyk ad dzia ania polecenia

CALL

, ale

je li ma by  to plik autonomiczny, zachowuj cy zasad  „idiotoodporno ci”, to takie problemy
musz  by  w nim rozwi zywane.

Je li to zrozumia

 to nie b dziesz mia  problemów z napisaniem autonomicznych

plików

16usun.bat

 (bez argumentowy, ale z pomoc ) oraz

16kopiuj.bat

 (z obs ug

argumentów, z pomoc ), tak aby dzia

y równie  z plikiem

16.bat

 ( ród o 16), a zarazem

ca

 identycznie jak w zadaniu 5 (plik

15.bat

).

background image

Rozdzia  2
System WINDOWS XP – podstawowe polecenia DOS

Pracownia systemów komputerowych – Piotr Cymerman

45

wiczenie

 7. Operator >>

Zapisz pliki

16.bat

,

16nowy.bat

,

16usun.bat

 oraz

16kopiuj.bat

 z odpowiednimi

nazwami

17*.bat

. Zmodyfikuj równie

ród o

17.bat

 (oraz pomoc we wszystkich plikach),

tak aby odwo ywa y si  do plików

17*.bat

. Dopisz do pliku g ównego (

17.bat

) linie

ze  ród a 18 oznaczone kolorem niebieskim.

@ECHO OFF
REM **********************************************************
REM Operacje na plikach wsadowych
REM **********************************************************

ECHO *******************************************>>log.bak
DATE/T>>log.bak
TIME/T>>log.bak
ECHO ->>log.bak

IF "%1"=="/?" GOTO pomoc
IF "%1"=="" GOTO blad
.
.
.

:koniec

ród o 18. Fragment pliku 17.bat

Dzi ki operatorowi przekierowania

>>

 b

 dodawane (za ka dym razem w nowej linii)

odpowiednie wpisy do pliku

log.bak

, w który b dzie zapisana historia operacji na plikach

tekstowych przy u yciu pliku wsadowego

17.bat

. Je li plik

log.bak

 nie istnieje to zostanie

samoczynnie utworzony i przy ka dej operacji aktualizowany. Dowiedz si  (wykorzystuj c
pomoc do polece ) co oznacza parametr

/T

 w poleceniach

DATE

 i

TIME

.

Teraz samodzielnie dopisz przekierowywanie do pliku

log.bak

 w programach

17nowy.bat

,

17usun.bat

 oraz

17kopiuj.bat

, tak aby po kolejno wydawanych poleceniach jak

na rys. 2.2.51 plik

log.bak

 mia  posta  jak w  ródle 19.

Rys. 2.2.51. Kolejne polecenia z u yciem pliku 17.bat

background image

Rozdzia  2
System WINDOWS XP – podstawowe polecenia DOS

Pracownia systemów komputerowych – Piotr Cymerman

46

*******************************************
2010-10-27
00:46
-
Utworzono plik [1.txt]
Utworzono plik [2.txt]
Utworzono plik [3.txt]
*******************************************
2010-10-27
00:46
-
Utworzono plik [1(kopia).txt]
Nie skopiowano pliku [4.txt]
Utworzono plik [3(kopia).txt]
*******************************************
2010-10-27
00:48
-
Pliki tekstowe usuniete z folderu biezacego
*******************************************
2010-10-27
00:48
-

Brak plikow do usuniecia

ród o 19. log.bak - zapisana historia operacji na plikach tekstowych jak na rys. 2.2.51

Zadanie 6. Operacje na plikach i folderach

Napisz pliki wsadowe spe niaj ce zadania:

1.

18news.bat

 – tworzy dowoln  ilo  nowych plików tekstowych w podfolderze folderu

bie cego – je li folder nie istnieje to musi zosta  utworzony. Sk adnia polecenia:

18news folder plik1 plik2 … plikN

Oczywi cie obs uga b dów, pomoc itd. musi by  zrealizowana.

2.

18backup.bat

 – tworzy kopie plików tekstowych ze wskazanego podfolderu w folderze

bie cym, zapisuj c je z tak  sam  nazw , ale z rozszerzeniem

.bak

. Dodatkowo nale y

ustawi  dla wszystkich kopii (pliki

*.bak

) atrybut

Tylko do odczytu

. Sk adnia

polecenia:

18backup folder plik1 plik2 … plikN

Podobnie jak w pkt. 1 wszelka obs uga b edów oraz pomoc musi by  zaimplementowana.

3.

18delete.bat

 – usuwa ze wskazanego podfolderu w folderze bie cym wszystkie pliki

z rozszerzeniem

*.bak

, których nazwa zaczyna si  od litery przekazanej jako argument.

Sk adnia polecenia:

18delete folder literka

Równie  ten plik powinien by  „idiotoodporny”.

4. Je li wszystko b dzie dzia

, napisz plik g ówny

18.bat

, który wywo ywany

z odpowiednim parametrem i argumentami b dzie realizowa  zadania z pkt. od 1 do 3 –
wykorzystaj oczywi cie pliki

18news.bat

,

18.backup.bat

 oraz

18delete.bat

 i polecenie

CALL

. Wszelkie operacje powinny by  rejestrowane w pliku

historia.txt

 (podobnie jak

wiczeniu 6 w pliku

log.bak

). Ten program równie  powinien obs ugiwa  sytuacje

wyj tkowe oraz powinien zawiera  pomoc.

background image

Rozdzia  2
System WINDOWS XP – podstawowe polecenia DOS

Pracownia systemów komputerowych – Piotr Cymerman

47

Przyk adowe wywo ania:

18 /n folder plik1 plik2 ... plikN

 – tworzenie plików tekstowych we wskazanym

podfolderze folderu bie cego (je li nie istnieje to musi by  prze plik wsadowy
utworzony)

18 /b folder plik1 plik2 … plikN

 – tworzenie kopii istniej cych plików tekstowych

(ta sama nazwa, rozszerzenie .bak) we wskazanym podfolderze

18 /d folder literka

 – usuwa ze wskazanego podfolderu wszystkie pliki

.bak

 z nazw

zaczynaj

 si  na

literk