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