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
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
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
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
System WINDOWS XP – podstawowe polecenia DOS
*******************************************
2010-10-2700:46
-
Utworzono plik [1.txt]
Utworzono plik [2.txt]
Utworzono plik [3.txt]
*******************************************
2010-10-2700:46
-
Utworzono plik [1(kopia).txt]
Nie skopiowano pliku [4.txt]
Utworzono plik [3(kopia).txt]
*******************************************
2010-10-2700:48
-
Pliki tekstowe usuniete z folderu biezacego
*******************************************
2010-10-2700: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
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