Rozdzia 2

System WINDOWS XP – podstawowe polecenia DOS

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 Pracownia systemów komputerowych – Piotr Cymerman

41

Rozdzia 2

System WINDOWS XP – podstawowe polecenia DOS

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 Pracownia systemów komputerowych – Piotr Cymerman

42

Rozdzia 2

System WINDOWS XP – podstawowe polecenia DOS

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

Pracownia systemów komputerowych – Piotr Cymerman

43

Rozdzia 2

System WINDOWS XP – podstawowe polecenia DOS

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).

Pracownia systemów komputerowych – Piotr Cymerman

44

Rozdzia 2

System WINDOWS XP – podstawowe polecenia DOS

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

Pracownia systemów komputerowych – Piotr Cymerman

45

Rozdzia 2

System WINDOWS XP – podstawowe polecenia DOS

*******************************************

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 w wiczeniu 6 w pliku log.bak). Ten program równie powinien obs ugiwa sytuacje wyj tkowe oraz powinien zawiera pomoc.

Pracownia systemów komputerowych – Piotr Cymerman

46

Rozdzia 2

System WINDOWS XP – podstawowe polecenia DOS

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

Pracownia systemów komputerowych – Piotr Cymerman

47