|
|
|
|
| Autorem opisu jest Mariusz Gerasik |
|
Budowa pliku wsadowego
2. Polecenie ECHO 3.Instrukcja warunkowa (1) 4. Etykiety i instrukcja skoku GOTO 5.Argumenty plików wsadowych 6. Instrukcja warunkowa (2) 7. Instrukcja CALL 8.Instrukcja warunkowa (3) 9. Instrukcja iteracyjna FOR Po wydaniu dowolnego polecenia interpreter command.com
sprawdza w pierwszej kolejności czy wydana komenda jest poleceniem wewnętrznym
(interpretowanym przez command.com) i w przypadku odpowiedzi pozytywnej wykonuje
wydaną komendę. Jeżeli jednak interpreter nie rozpoznaje polecenia to przyjmuje,
że użytkownik zarządał uruchomienia programu. sleep 10 Command.com poszukuje wówczas pliku o nazwie o nazwie sleep.com, następnie pliku sleep.exe i ostatecznie pliku sleep.bat. Po znalezieniu jednego z dwóch pierwszych zbiorów command.com uruchamia znaleziony program, w przypadku znalezienia zbioru bat wykonuje jego interpretację. Plik wsadowy, aby mógł być poprawnie wykonany
(zinterpretowany) powinien zawierać ciąg poleceń systemu, z których każde
powinno być umieszczone w osobnej linii pliku. Mogą to być polecenia wewnetrzne,
polecenia zewnętrzne (programy) lub polecenia specyficzne dla pliku wsadowego
(polecenia, które są dozwolone tylko w tym pliku). REM Plik Info.bat ECHO Konfiguracja systemu MS-DOS ECHO [autoexec.bat] TYPE C:\autoexec.bat | MORE ECHO [config.sys] TYPE C:\config.sys | MORE ECHO [Dysk twardy C:] LABEL
ECHO Naciśnij jakiś klawisz... PAUSE
Aby wykonać powyższy plik należy nadać mu nazwę z rozszerzeniem bat (może być Info.bat) a następnie w katalogu bieżącym wpisać komendę będącą nazwą pliku wsadowego, czyli odpowiednio: C:\TEMP>info
Interpreter wykonuje sekwencyjnie jedno po drugim wszystkie polecenia pliku wsadowego w kolejności ich występowania. Pierwsza linia pliku (polecenie REM) jest komentarzem jest komentarzem i podczas wykonywania nie jest brana pod uwagę. Dwie kolejne linie zawierają polecenie ECHO, którego wykonanie polega na wypisaniu podanego tekstu na ekranie. Linie 4 i 6 zawierają polecenie MS-DOS wypisania na ekranie podanych plików (TYPE) z podziałem na strony (MORE). Linia ostatnia zawiera polecenie PAUSE, którego wykonanie polega na wypisaniu tekstu "Naciśnij jakiś klawisz, aby kontynuować..." i zatrzymaniu wykonywania pliku wsadowego do czasu naciśnięcia dowolnego klawisza. Polecenie ECHO C:\BATCH>test
C:\BATCH>dir
Wolumin w stacji dysków C nie ma etykiety Numer seryjny woluminu: 364F-10E8 Katalog C:\BATCH
. <DIR> 00.08.04 20:42 .
.. <DIR> 00.08.04 20:42 ..
TEST BAT 3 00.08.04 20:43 test.bat
1 plik(ów) 3 bajtów
2 katalog(ów) 271 859 712 bajtów wolnych
C:\BATCH>_
Pierwsza linia zawiera tekst wydanej komendy. W linii drugiej interpreter wypisał treść polecenia występującego w pliku wsadowym. Kolejne linie zawierają wynik wykonanania polecenia DIR. Przykład ten pokazuje sposób postępowania podczas wykonywania pliku wsadowego - command.com czyta linię pliku wsadowego, wypisuje ją na ekranie a następnie uruchamia odpowiedni program lub polecenie wewnętrzne. Po zakończeniu wykonywania polecenia proces się powtarza - odczyta kolejną linię, wypisze jej treść na ekranie a następnie uruchomi odpowiedni program, itd. Polecenie ECHO można wydać z argumentem ON lub OFF. Instrukcja ECHO OFF powoduje wyłączenie wypisywania treści poleceń
występujących w pliku wsadowym. Od momentu wykonania tej instrukcji command.com
nie będzie wypisywał treści przetwarzanych komend a jedynie ich wyniki. Bardzo
często instrukcję powyższą umieszcza się w pierwszej linii pliku wsadowego. Z analizy wydruku dowolnego pliku wsadowego zawierającego w pierwszej linii komendę ECHO OFF można wywnioskować, że wyłączone tą komendą wypisywanie treści poleceń obowiązuje dopiero od linii drugiej - command.com zawsze wypisze treść pierwszej komendy pliku, czyli ECHO OFF. Aby tego uniknąć należy linię tą poprzedzić znakiem '@' ("at") - linia pliku, która poprzedzona jest tym znakiem nigdy nie jest wyświetlana na ekranie. Podsumowując: istnieją dwie metody całkowitego wyłączenia wypisywania treści komend pliku wsadowego: 1. umieszczenie w pierwszej linii komendy @ECHO OFF, 2. rozpoczynanie każdej linii pliku znakiem '@'. IF EXIST plik komenda albo
IF NOT EXIST plik komenda Instrukcja w tej postaci pozwala na wykonananie dowolnego polecenia tylko wówczas, gdy istnieje podany plik (lub gdy nie istnieje jeśli użyto NOT). Rozważmy dwie następujące komendy: [1] DEL lista.txt > NUL
[2] IF EXIST lista.txt DEL lista.txt > NUL
Polecenie [1] jest oczywiste: usuń plik lista.txt. Polecenie [2] mówi: jeżeli istnieje plik lista.txt, to usuń ten plik. Efekt końcowy obu poleceń jest taki sam - zostanie usunięty plik lista.txt. Pomiędzy tymi poleceniami istnieje jednak pewna różnica; o poleceniu [2] można by powiedzieć, że "jest lepsze". Otóż polecenie DEL usuwa podany plik i nie wyświetla żadnych komunikatów o usunięciu pliku, jeżeli jednak usuwany plik nie istnieje, to wykonanie polecenia jest niemożliwe - zostanie wówczas wyświetlony komunikat o błędzie - mimo przekierowania wyjścia polecenia do pliku pustego komunikat ów pojawi się na ekranie. Taka sytuacja nie będzie miała miejsca w przypadku polecenia [2]: to polecenie bowiem wykona komendę DEL lista.txt tylko wówczas, gdy plik lista.txt istnieje - jeżeli w katalogu bieżącym pliku nie ma, to komenda jest pomijana i na tym kończy się wykonanie całej instrukcji warunkowej. Polecenie DEL można tutaj zastąpić inną komendą, np: [1] TYPE lista.txt
[2] IF EXIST lista.txt TYPE lista.txt
W tym wypadku mamy doczynienia z tą samą sytuacją: jeżeli nie istnieje plik lista.txt, to polecenie [1] wypisze komunikat o błędzie - nie zrobi tego natomiast polecenie [2]. Etykiety i instrukcja skoku GOTO @ECHO OFF IF EXIST lista.txt COPY lista.txt lista.bak > NUL Jeżeli w katalogu bieżącym istnieje plik lista.txt
zostanie wykonane polecenie utworzenia jego kopii pod nazwą lista.bak. Powyższy przykład demonstruje problem wykonania komendy tylko wówczas, gdy spełnione są dwa lub więcej określonych warunków - problemy tego typu rozwiązuje się na ogół za pomocą instrukcji skoku GOTO. Instrukcja: :Etykieta
definiuje tzw. etykietę w pliku wsadowym. Etykieta to
inaczej mówiąc słowna nazwa linii pliku, umieszczając instrukcję etykiety
nazywamy linię pliku podaną po znaku ':' nazwą. Nazwa etykiety powinna być
jednym słowem nie zawierającym odstępów (można połączyć słowa znakiem '_') i
powinna rozpoczynać się tuż za znakiem ':', nie należy rozdzielać nazwy i znaku
':' odstępami. GOTO Etykieta Wykonanie instrukcji skoku polega na przeniesieniu wykonywania pliku do tej linii w pliku, która zawiera (jest nazwana) podaną etykietę (wpisujemy tutaj tylko nazwę etykiety, bez znaku ':'). Wróćmy teraz do przykładu usuwania pliku: [1] @ECHO OFF
[2] IF EXIST lista.txt GOTO Usuwaj
[3] ECHO Nie ma takiego pliku...
[4] GOTO Koniec
[5] :Usuwaj
[6] ECHO Usuwanie pliku lista.txt...
[7] DEL lista.txt > NUL
[8] ECHO Wykonane...
[9] :Koniec
W linii [2] następuje sprawdzenie istnienia w katalogu
bieżącym pliku lista.txt. Plik wsadowy wykonujący wspomniane wcześniej kopiowanie pliku lista.txt na lista.bak mógłby mieć postać: @ECHO OFF IF NOT EXIST lista.txt GOTO BrakPliku IF EXIST lista.bak GOTO IstniejeKopia
ECHO Kopiowanie lista.txt na lista.bak... COPY lista.txt lista.bak > NUL ECHO Wykonane... GOTO Koniec
:BrakPliku
ECHO Plik lista.txt nie istnieje... GOTO Koniec
:IstniejeKopia
ECHO Plik lista.bak już istnieje...
:Koniec
@ECHO OFF IF EXIST %1 GOTO Usuwaj
ECHO Plik %1 nie istnieje... GOTO Koniec
:Usuwaj
ECHO Usuwanie pliku %1 ... DEL %1 > NUL ECHO Wykonane...
:Koniec
UWAGA: plik należy uruchomić z argumentem
będącym nazwą pliku - jego brak może spowodować błąd wykonania i w konsekwencji
komunikat o wymaganym argumencie. C:\TEMP>mydel.bat lista.txt
Usuwanie pliku lista.txt ...
Wykonane...
C:\TEMP>_
Widać powyżej, że w linii drugiej interpreter zamiast
symbolu %1 wypisał faktycznie podany argument w wywołaniu lista.txt. Jeżeli plik
wsadowy uruchamiamy bez argumentów to wszystkie wyrażenia %1, %2, ..., %9 są
napisami pustymi (napis nie zawierający żadnych znaków). Jeżeli w linii komend
występuje N argumentów, to wyrażenia %1, ..., %N reprezentują podane argumenty,
wyrażenia %N+1, %N+2, ... są natomist napisami pustymi. Instrukcja warunkowa (2) IF "napis1" == "napis2" komenda albo
IF NOT "napis1" == "napis2" komenda Instrukcja w tej postaci powoduje wykonanie podanej komendy tylko wówczas, gdy oba napisy napis1 i napis2 są równe, czyli takie same. Słowo równość oznacza tutaj równość idealną - napisy musza mieć taką samą długość i składać się z takich samych znaków. W przypadku nazw plików i katalogów duże i małe litery nie są rozróżnialne, w przypadku porównywania napisów brane jest to pod uwagę. Tak więc napisy "Lista.txt" oraz "lista.txt" wcale nie są równe. Warto pamiętać, że bezpieczniej jest podawać porównywane napisy w cudzysłowie oraz pomiędzy napisami a znakiem '=' umieścić znak odstępu - jego brak może spowodować błąd wykonania pliku. Ta postać instrukcji warunkowej posłuży nam przede wszystkim do sprawdzania ilości podanych argumentów. Korzystając o obu postaci instrukcji możemy napisać ostateczną wersję pliku wsadowego mydel.bat usuwającego plik podany jako argument, przyjmując przy tym następujące założenia: · plik wsadowy może być uruchomiony z argumentem '/?' - należy wówczas wyświetlić informację o przeznaczeniu oraz opis składni, · uruchomienie pliku z jednym argumentem będącym nazwą pliku powoduje jego usunięcie lub wypisaniu komunikatu o błędzie, · jeżeli plik został uruchomiony z dwoma lub większą ilością argumentów, to jeśli pierwszym z nich jest '/?', to wyświetlamy informację o przeznaczeniu i składnię, jeżeli natomiast pierwszy argument jest nazwą pliku, to wypisujemy komunikat o błędzie i składnię. @ECHO OFF
REM
REM Usuwa plik podany jako argument REM
IF "%1" == "/?" GOTO Informacja IF "%1" == "" GOTO BrakArgumentu IF NOT "%2" == "" GOTO ZbytWieleArgumentow IF EXIST %1 GOTO Usuwaj
ECHO Plik [%1] nie istnieje. GOTO Koniec
:Usuwaj
ECHO Usuwanie [%1] DEL %1 > NUL GOTO Koniec
:BrakArgumentu
ECHO Oczekiwany argument. GOTO Skladnia
:ZbytWieleArgumentow
ECHO Zbyt wiele argumentów. GOTO Skladnia
:Informacja
ECHO Usuwa podany plik.
:Skladnia
ECHO Składnia polecenia: ECHO MYDEL [/?] nazwa_pliku
:Koniec
Uff... Instrukcja CALL CALL plik_wsadowy [argumenty] Do tej pory stosowane były instrukcje skoku zawsze do
etykiety położonej "poniżej" w pliku wsadowym. Istnieje możliwość przeniesienia
wykonywania pliku do linii wcześniejszej, czyli "powyżej" - tego typu
konstrukcję, tzn. etykietę oraz występującą poniżej instrukcję skoku do tej
właśnie etykiety nazywamy pętlą. @ECHO OFF ECHO Arg1=[%1] Arg2=[%2] Arg3=[%3] Arg4=[%4] SHIFT
ECHO Arg1=[%1] Arg2=[%2] Arg3=[%3] Arg4=[%4] SHIFT
ECHO Arg1=[%1] Arg2=[%2] Arg3=[%3] Arg4=[%4] SHIFT
ECHO Arg1=[%1] Arg2=[%2] Arg3=[%3] Arg4=[%4] SHIFT
ECHO Arg1=[%1] Arg2=[%2] Arg3=[%3] Arg4=[%4] SHIFT
ECHO Arg1=[%1] Arg2=[%2] Arg3=[%3] Arg4=[%4] Tak wygląda wykonanie pliku z pięcioma argumentami: C:\TEMP>argumen.bat list1.txt list2.txt list3.txt list4.txt list5.txt
Arg1=[list1.txt] Arg2=[list2.txt] Arg3=[list3.txt] Arg4=[list4.txt]
Arg1=[list2.txt] Arg2=[list3.txt] Arg3=[list4.txt] Arg4=[list5.txt]
Arg1=[list3.txt] Arg2=[list4.txt] Arg3=[list5.txt] Arg4=[]
Arg1=[list4.txt] Arg2=[list5.txt] Arg3=[] Arg4=[]
Arg1=[list5.txt] Arg2=[] Arg3=[] Arg4=[]
Arg1=[] Arg2=[] Arg3=[] Arg4=[]
Po pierwszym wykonaniu polecenia SHIFT wyrażenie %1
reprezentuje już napis list2.txt, wyrażenie %2 napis list3.txt i tak dalej. Po
wykonaniu drugim wyrażenie %1 jest równe list3.txt, zaś %4 jest w ogóle napisem
pustym - %4 musiałoby reprezentować szósty argument podany w wywołaniu,
tymczasem podano tylko pięć argumentów. Oto prosty przykład pliku wsadowego argument.bat, który umieszcza w pliku o nazwie argument.txt wszystkie podane argumenty, każdy w osobnej linii. @ECHO OFF IF "%1" == "/?" GOTO Informacja
:Start
IF "%1" == "" GOTO Koniec ECHO %1 >> argument.txt SHIFT
GOTO Start
:Informacja
ECHO Umieszcza w pliku argument.txt wszystkie podane argumenty. ECHO Składnia polecenia: ECHO ARGUMENT [/?] [arg1 arg2 ...]
:Koniec
Jeśli pierwszy argument jest równy "/?" zostanie
wyświetlona pomoc. W pozostałych przypadkach wykonywana jest pętla od etykiety
Start do instrukcji skoku GOTO Start. Jeżeli używamy w pliku wsadowym pętli wskazane jest przedsięwzięcie pewnych środków ostrożności. Otóż wykonanie pliku wsadowego można przerwać naciskając klawisz Ctrl+C. Wówczas command.com może zareagować na naciśnięty klawisz i zakończyć wykonywanie pliku, aby jednak było to możliwe należy ustawić wykrywalność tego klawisza poleceniem: BREAK ON Polecenie to można wydać na klawiaturze, albo umieścić
w pliku wsadowym przed rozpoczęciem pętli - najlepiej na początku pliku. Samo
polecenie BREAK bez argumentu ON lub OFF wyświetla jedynie stan reakcji na
klawisz Ctrl+C. NIEOMYLNOŚĆ = FORMAT C:
co mniej więcej znaczy tyle, że kres wiary we własne umiejętności zawsze idzie w parze z utratą części dysku. Pętle wykorzystujemy na ogół, gdy określoną czynność trzeba wykonać na większej liczbie liczbie plików. Mając do dyspozycji plik wsadowy mydel.bat usuwający jeden podany plik, zadanie polegające na usunięciu wszystkich plików będących argumentami pliku wsadowego sprowadza się wyłącznie do wywołania pliku mydel.bat taką ilość razy, ile plików mamy usunąć. Przykład: @ECHO OFF BREAK ON
:Start
IF "%1" == "" GOTO Koniec CALL mydel.bat %1 SHIFT
GOTO Start
:Koniec
Obsługę błędów oraz "pomoc" należy dopisać samodzielnie. Instrukcja warunkowa (3) Kiedy program kończy swoje działanie ma możliwość
poinformowania systemu operacyjnego o stanie swojego zakończenia. Przekazana
informacja jest dosyć uboga albowiem może być zaledwie nieujemną liczbą
całkowitą, ale o tym, że w świecie komputerów jedna liczba może być informacją
bardzo obszerną nikogo przekonywać nie trzeba. Liczbę tą nazywamy kodem wyjścia
programu. Instrukcja warunkowa w trzeciej postaci służy właśnie do sprawdzania stanu zakończenia ostatnio wykonanego programu lub komendy: IF ERRORLEVEL kod_wyjścia komenda albo
IF NOT ERRORLEVEL kod_wyjścia komenda Kod wyjścia jest tutaj liczbą naturalną, komenda
poleceniem do wykonania. Instrukcja w tej postaci wykona podaną komendę tylko
wówczas, gdy ostatnio wykonywane polecenie zwróciło kod wyjścia większy lub
równy podanej liczbie (w przypadku użycia NOT mniejszy od podanej liczby). CHOICE [/C:odpowiedzi] [/N] [/T:Z,XY] [tekst]
Co robi polecenie CHOICE? Po wydaniu komendy CHOICE bez
argumentów na ekranie zostanie wyświetlony napis "[T,N]?" a następnie program
będzie czekał do momentu naciśnięcia jednej z liter 'T' lub 'N'. Wydanie
polecenia w postaci CHOICE /C:12A* spowoduje wypisanie tekstu "[1,2,A,*]?" i
oczekiwanie programu na naciśnięcie któregoś z podanych znaków. Jeżeli podamy
określony tekst, to program wypisze go a następnie wyświetli listę
dopuszczalnych odpowiedzi. Użycie opcji "/N" spowoduje, że nie zostanie
wyświetlona lista odpowiedzi, opcja "/T" określa odpowiedź domyślną Z po XY
sekundach. CHOICE /C:ABX /N /T:0,5 "Rodzaj szkoły? [A-podst, B-średn, X-żadna] : "
na ekranie pojawi się tekst "Rodzaj szkoły? [A-podst,
B-średn, X-żadna] : " a następnie program będzie czekał na naciśnięcie jednego z
klawiszy A, B, X przez maksymalnie 5 sekund - nie wybranie żadnej z odpowiedzi
jest równoznaczne z wybraniem odpowiedzi domyślnej, czyli odpowiedzi X. Przykład: @ECHO OFF
:Start
CLS
ECHO _ ECHO _ ECHO [ 1 ]. Norton Commander ECHO [ 2 ]. Turbo Pascal ECHO [ 3 ]. Windows ECHO [ Q ]. Zakończ ECHO _ ECHO _ CHOICE /C:123Q /N "Wybierz program do uruchomienia : " IF ERRORLEVEL 4 GOTO Koniec IF ERRORLEVEL 3 GOTO Windows IF ERRORLEVEL 2 GOTO Pascal
ECHO Trwa uruchamianie Norton Commandera... C:\NC\NC.EXE
GOTO Start
:Windows
ECHO Trwa uruchamianie systemu Windows... C:\WINDOWS\WIN.COM
GOTO Koniec
:Pascal
ECHO Trwa uruchamianie Turbo Pascala... C:\TP7\TURBO.EXE
GOTO Start
:Koniec
Linie zawierające polecenie ECHO z kreską podkreślenia
należy wpisać w następujący sposób: po wpisaniu słowa ECHO należy wpisać klawisz
spacji a następnie nacisnąć i przytrzymać klawisz Alt i przy wciśniętym klawiszu
Alt na klawiaturze numerycznej (z prawej strony) wpisać kod znaku 255 po czym
można zwolnić klawisz Alt - kursor powinien się wówczas przesunąć o jedną
pozycję w lewo, a wszystko to po to, aby zmusić polecenie ECHO do wypisania
pustej linii. Zwróćmy uwagę na kolejność sprawdzania kodu wyjścia
polecenia CHOICE. Instrukcje warunkowe porównują kod wyjścia od wartości
największej możliwej czyli 4 w dół do wartości przedostatniej 2 - pominięcie
wszystkich IF jest równoważne z wyborem odpowiedzi pierwszej. Taki sposób
sprawdzania wartości kodu jest konsekwencją sposobu wykonywania instrukcji
warunkowej - jeżeli w pierwszej instrukcji IF umieścilibyśmy kod 2, to
spełnienie tego warunku mówiłoby tylko tyle, że wybrano odpowiedź 2, 3 lub 4.
Można przyjąć, że sprawdzanie kodu wyjścia zawsze wykonujemy w ten sam sposób od
wartości największych do najmniejszych - choć oczywiście można wykonać to
inaczej. Przykład: @ECHO OFF
BREAK ON
:Usuwaj
IF NOT EXIST %2 GOTO MoznaZmienic
CHOICE /C:TN "Plik %2 już istnieje. Usunąć istniejący plik "
IF ERRORLEVEL 2 GOTO Koniec
DEL %2 > NUL
:MoznaZmienic
ECHO Przenoszenie %1 na %2
REN %1 %2 > NUL
GOTO Koniec
:Koniec
Przejście do etykiety Usuwaj powinno nastąpić w sytuacji gdy podano dwa argumenty będące nazwami plików i argument pierwszy jest nazwą istniejącego pliku. Wówczas jeżeli nie istnieje plik podany jako drugi argument, to zmieniamy nazwę pliku, w przeciwnym wypadku zadajemy pytanie czy usunąć istniejący plik. Po odpowiedzi negatywnej przechodzimy na koniec pliku wsadowego, w przypadku odpowiedzi pozytywnej usuwamy istniejący plik i wykonujemy zmianę nazwy. Instrukcja iteracyjna FOR :Start
CHOICE /C:TN "Powtórzyć ?" IF ERRORLEVEL 2 GOTO Koniec GOTO Start
:Koniec
Przerwanie pętli następuje w momencie naciśnięcia klawisza 'N' - nie można z góry przewidzieć ile razy użytkownik wybierze odpowiedź 'T'. Instrukcja iteracyjna FOR pliku wsadowego jest pętlą o znanej liczbie powtórzeń i następującej składni: FOR %%X IN (lista) DO komenda Argument lista jest obowiązkowy i zawiera pooddzielane znakami odstępu nazwy plików - w nazwach tych mogą występować znaki wieloznaczne '?' i '*'. Po znakach '%%' pojemy tzw. zmienną - odpowiednik niewiadomej w matematyce. Zmienna ta będzie kolejno przybierać wszystkie możliwe wartości spośród wartości podanych na liście (lista). Dla każdej możliwej wartości zmiennej X zostanie wykonane polecenie komenda. Rozważmy przykład: [1] FOR %%A IN (1 2 3) DO DIR
[2] FOR %%K IN (zadanie zadanie.bat zadanie.bak) DO DIR
Każda z powyższych instrukcji przyniesie ten sam efekt
- trzy razy zostanie wykonane polecenie DIR. W przykładzie [1] zmienna A
przybierze (otrzyma) wartość "1" a następnie nastąpi wykonanie polecenia DIR. Po
wykonaniu komendy zmienna A otrzyma wartość "2" i ponownie nastąpi wykonanie
komendy. po jej zakończeniu zmienna A otrzyma wartość "3" i zostanie wykonana
komenda. Na tym zakończy się wykonywanie polecenia FOR. Odpowiedź na pytanie po co zmienna przyjmuje wartości z listy staje się oczywista jeśli powiemy, że wyrażenie %%X może występować w treści podanej komendy i reprezentuje aktualną wartość zmiennej X, podobnie jak %1 reprezentuje pierwszy argument pliku wsadowego. Tak więc, wykonanie polecenia: FOR %%A IN (1 2 3 4 5 6 7 8 9 0) DO ECHO Wartość zmiennej = %%A spowoduje wypisanie dziesięciu linii zawierających
tekst "Wartość zmiennej = " oraz odpowiednią cyfrę z listy. FOR %%A IN (*.txt *.bak) DO COPY %%A C:\TEMP skopiuje wszystkie pliki z katalogu bieżącego z rozszerzeniami txt lub bak do podanego katalogu C:\TEMP. Zadania do samodzielnego rozwiązaniaWszystkie pliki wsadowe powinny działać we wszystkich możliwych przypadkach związanych z istnieniem plików. Należy również zadbać o to, aby podczas wykonywania plików wyświetlane były wyłącznie informacje wypisywane przez polecenie ECHO pliku wsadowego. Napisać plik wsadowy, który zmieni nazwę pliku (np. lista.txt) na taką samą, ale z innym rozszerzeniem. Napisać plik wsadowy, który połączy dwa dowolnie wybrane pliki w jeden plik o nazwie wynik.txt. Napisać plik wsadowy, który zamieni zawartość dwóch dowolnie wybranych plików.> Korzystając m.in. z poleceń find oraz sort napisać plik wsadowy mydir.bat, który wyświetli zawartość katalogu bieżącego. Na wydruku powinny być widoczne tylko pliki i katalogi. Wydruk powinien zawierać w pierwszej kolejności listę plików a następnie listę katalogów. Zarówno pliki jak i katalogi należy posortować alfabetycznie. Nie wolno korzystać z żadnych opcji polecenia dir, można natomiast skorzystać z tymczasowych plików pomocniczych. Napisać plik wsadowy mycopy.bat służący do tworzenia kopii pliku pod inną nazwą, przyjmując następujące założenia: - plik działa tylko w przypadku gdy został uruchomiony z dwoma różnymi argumentami, - jeżeli plik o takiej nazwie jak nazwa kopii już istnieje, to nie wykonujemy kopiowania. Napisać plik wsadowy myren.bat służący do zmiany nazwy na nazwę podaną, przyjmując następujące założenia: - plik działa tylko w przypadku gdy został uruchomiony z dwoma argumentami, - jeżeli oba argumenty są takie same, to jeśli plik istnieje nie wykonujemy żadnych czynności, jeśli natomiast pliku nie ma wypisujemy komunikat o błędzie, - jeżeli plik o takiej nazwie jak nowa nazwa pliku już istnieje, to wypisujemy komunikat o błędzie. Napisać plik wsadowy mycopy.bat służący do tworzenia kopii pliku pod inną nazwą, przyjmując następujące założenia: - plik może być uruchomiony z dowolną ilością argumentów, - jeżeli nie podano argumentów wypisujemy składnię, - jeżeli pierwszy argument jest równy "/?" wypisujemy informację o przeznaczeniu i składnię, - jeżeli podano argumenty i pierwszy z nich nie jest równy "/?" to próbujemy wykonać kopiowanie gdy podano dokładnie dwa różne argumenty, w przeciwnym wypadku (gdy podano więcej niż dwa, gdy podano jeden argument lub gdy argumenty są dwa, ale takie same) wypisujemy komunikat o błędzie, - jeżeli plik o takiej nazwie jak nazwa kopii już istnieje, to nie wykonujemy kopiowania. Napisać plik wsadowy myren.bat służący do zmiany nazwy pliku pod podaną, przyjmując następujące założenia: - plik może być uruchomiony z dowolną ilością argumentów, - jeżeli nie podano argumentów wypisujemy składnię, - jeżeli pierwszy argument jest równy "/?" wypisujemy informację o przeznaczeniu i składnię, - jeżeli podano argumenty i pierwszy z nich nie jest równy "/?" to próbujemy zmienić nazwę gdy podano dokładnie dwa argumenty, w przeciwnym wypadku (gdy podano więcej niż dwa, gdy podano jeden argument lub gdy argumenty są dwa, ale takie same) wypisujemy komunikat o błędzie, - jeżeli plik o takiej nazwie jak nazwa kopii już istnieje, to usuwamy go, a następnie wykonujemy zmianę nazwy pliku, - jeżeli argumenty są dwa i są takie same oraz plik istnieje, to efekt powinien być taki, jak gdyby zmieniono nazwę pliku. A to przykłady rozwiązań tych zadań Autorem opisu jest Mariusz Gerasik...pisz do autora |