Systemy operacyjne Laboratorium. Pliki wsadowe Windows (część 2)

Podobne dokumenty
Pliki wsadowe systemu DOS

Systemy operacyjne II Laboratorium. Część 1: Pliki wsadowe Windows

TEMAT : System operacyjny MS DOS pliki wsadowe

Wiersz poleceń Windows

Laboratorium Systemów Operacyjnych Komputerów Tryb linii komend i programowanie wsadowe w systemach DOS/Windows

Narzędzia informatyczne w językoznawstwie

Polecenia wewnętrzne:

Trochę o plikach wsadowych (Windows)

II. Programowanie wsadowe DOS/Windows

Korzystając z plików wsadowych, zwanych również programami wsadowymi lub skryptami, można uprościć rutynowe lub wielokrotnie wykonywane zadania.

Programowanie w języku Python. Grażyna Koba

Administracja systemem Windows XP

SYSTEMY OPERACYJNE ĆWICZENIE POLECENIA SYSTEMU MSDOS

DOS. Opis podstawowych komend w systemie MS DOS 6.22

Programowanie w języku C++ Grażyna Koba

Wiersz poleceń systemu Windows. Wybrane polecenia linii poleceń (podstawowe operacje dyskowe)

Ćwiczenie 1. Ćwiczenie 2. Ćwiczenie 3. Opisz działanie następujących komend systemowych : COPY EDIT FDISK FIND FORMAT XCOPY

lekcja 8a Gry komputerowe MasterMind

Za pomocą niniejszej instrukcji baza programu MAK zostanie przygotowania do eksportu na METALIB.

Windows XP Wiersz polecenia

@echo off wyłączyliśmy polecenie "echo" Pause>nul oczekiwanie naciśnięcia dowolnego przycisku Pause? echo. przerwa miedzy wierszami

Po uruchomieniu programu nasza litera zostanie wyświetlona na ekranie

Pętle. Dodał Administrator niedziela, 14 marzec :27

Kopiowanie, przenoszenie plików i folderów

Jak zawsze wyjdziemy od terminologii. While oznacza dopóki, podczas gdy. Pętla while jest

Pętle. for, while, do... while, foreach. Materiał pomocniczy do kursu Podstawy programowania Autor: Grzegorz Góralski ggoralski.

Nazwa implementacji: Nauka języka Python pętla for. Autor: Piotr Fiorek

MS-DOS polecenia wewnętrzne i

Technologie Informacyjne - Linux 2

W przeciwnym wypadku wykonaj instrukcję z bloku drugiego. Ćwiczenie 1 utworzyć program dzielący przez siebie dwie liczby

Podstawy Programowania C++

Projektowanie aplikacji internetowych Pisanie skryptów wiersza poleceń - pętle

Instrukcja połączenia z programem Compas LAN i import konfiguracji

1 Przygotował: mgr inż. Maciej Lasota

- wszystkie elementy - wszystkie elementy

Temat zajęć: Tworzenie skryptów powłoki systemu operacyjnego.

Klawiatura komputerowa.

Opis klawiatury komputerowej

DOS Podstawowe komendy Przygotowanie dyskietki do pracy Praca z katalogami w systemie DOS Operacje kopiowania

Zmienne powłoki. Wywołanie wartości następuje poprzez umieszczenie przed nazwą zmiennej znaku dolara ($ZMIENNA), np. ZMIENNA=wartosc.

Klawisze szybkiego wyboru układu drabinkowego

1 Podstawy c++ w pigułce.

Utworzenie pliku. Dowiesz się:

Zespół Szkół Technicznych w Suwałkach. Pracownia Systemów Komputerowych. Ćwiczenie Nr 15 PRACA W TRYBIE MS-DOS. Opracował Sławomir Zieliński

Informatyka Arkusz kalkulacyjny Excel 2010 dla WINDOWS cz. 1

for (inicjacja_warunkow_poczatkowych; wyrazenie_warunkowe; wyrazenie_zwiekszajace) { blok instrukcji; }

Informatyka Arkusz kalkulacyjny Excel 2010 dla WINDOWS cz. 1

Zastanawiałeś się może, dlaczego Twój współpracownik,

Pętla for. Wynik działania programu:

PODSTAWY INFORMATYKI 1 PRACOWNIA NR 6

PODSTAWOWE INFORMACJE NA TEMAT KONSOLI W SYSTEMIE WINDOWS

Podstawy programowania. Wykład: 4. Instrukcje sterujące, operatory. dr Artur Bartoszewski -Podstawy programowania, sem 1 - WYKŁAD

Wstęp do Informatyki dla bioinformatyków

Schematy blokowe I. 1. Dostępne bloki: 2. Prosty program drukujący tekst.

Kompilator języka Basic można bezpłatnie pobrać ze strony z zakładki DOWNLOAD.

Celem tego projektu jest stworzenie

Instrukcja obsługi systemu elektronicznego katalogu przedmiotów (sylabusów)

Pętle i tablice. Spotkanie 3. Pętle: for, while, do while. Tablice. Przykłady

tworzenie katalogów Aby utworzyć nowy katalog wpisz: mkdir katalog1 Ta komenda utworzy katalog o nazwie katalog1.

Uwagi dotyczące notacji kodu! Moduły. Struktura modułu. Procedury. Opcje modułu (niektóre)

Zapisywanie algorytmów w języku programowania

Dlaczego stosujemy edytory tekstu?

Podstawy pracy z edytorem tekstu. na przykładzie Open Office

Powłoka poleceń Windows XP

INSTRUKCJA INSTALACJI I URUCHOMIENIA PROGRAMÓW FINKA DOS W SYSTEMACH 64 bit

Administracja sieciowymi systemami operacyjnymi III Klasa - Linux

1 Powtórzenie wiadomości

Liczby losowe i pętla while w języku Python

Sieci i systemy operacyjne I Ćwiczenie 1. Podstawowe polecenia systemu Unix

Warsztaty dla nauczycieli

Moduł 1 Pliki i foldery

Pliki wsadowe powłoki Windows.

Podstawy programowania Laboratorium. Ćwiczenie 2 Programowanie strukturalne podstawowe rodzaje instrukcji

Podstawy Programowania Podstawowa składnia języka C++

Wykład II PASCAL - podstawy składni i zmienne, - instrukcje wyboru, - iteracja, - liczby losowe

for (inicjacja_warunkow_poczatkowych(końcowych); wyrazenie_warunkowe; wyrazenie_zwiekszajace(zmniejszające)) { blok instrukcji; }

znajdowały się różne instrukcje) to tak naprawdę definicja funkcji main.

del - usuwanie zbioru lub grupy zbiorów z dysku, np. del c:\public\autoexec bat, del c:\public\*.*

Technologie Informacyjne - Linux 3

Struktura pliku projektu Console Application

Jakie nowości i udogodnienia niesie za sobą przejście do Sidoma 8, część z tych różnic znajdziecie Państwo w tabeli poniżej.

Układy VLSI Bramki 1.0

Klawiatura. Klawisze specjalne. Klawisze specjalne. klawisze funkcyjne. Klawisze. klawisze numeryczne. sterowania kursorem. klawisze alfanumeryczne

REKURENCJA W JĘZYKU HASKELL. Autor: Walczak Michał

Pliki wsadowe BATCH. Położenie: (nie dotyczy) 3bird.net 2013,

Wykład II PASCAL - podstawy składni i zmienne, - instrukcje wyboru, - iteracja cz. 1

Część XV C++ Ćwiczenie 1

Zakład Systemów Rozproszonych

Temat: Organizacja skoroszytów i arkuszy

Kurs pisania skryptów w powłoce BASH

Kombinacje modyfikatorów klawiaturowych i kliknięć myszą dla obiektów powłoki

Skrypty powłoki Skrypty Najcz ciej u ywane polecenia w skryptach:

do instrukcja while (wyrażenie);

7. Pętle for. Przykłady

Scenariusz zajęć. Moduł VI. Projekt Gra logiczna zgadywanie liczby

Nazwa implementacji: Nauka języka Python wyrażenia warunkowe. Autor: Piotr Fiorek. Opis implementacji: Poznanie wyrażeń warunkowych if elif - else.

Pracownia internetowa w każdej szkole (edycja Jesień 2007)

Transkrypt:

Systemy operacyjne Laboratorium Pliki wsadowe Windows (część 2) Zagadnienia do zrealizowania (3h) Instrukcja warunkowa (2)... 1 Instrukcja CALL... 2 Instrukcja warunkowa (3)... 4 Instrukcja iteracyjna FOR... 6 Zadania do samodzielnego rozwiązania... 7 Instrukcja warunkowa (2) Druga postać instrukcji warunkowej dotyczy porównywania napisów: 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ę. 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. :Usuwaj ECHO Usuwanie [%1] DEL %1 > NUL :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 Mimo iż czynność jest stosunkowo prosta, to konstrukcja pliku wymaga sporego nakładu pracy. Przeanalizujemy krótko poszczególne warunki zadania. Z przyjętych założeń wynika, że dopuszczalne są wywołania: "mydel /?", "mydel /? /?", "mydel /? lista.txt", "mydel /? lista.txt lista.bak" - dopuszczalne jest każde wywołanie, w którym pierwszy argument jest równy "/?". W związku z tym w pliku wsadowym w pierwszej kolejności sprawdzamy wystąpienie tego właśnie argumentu. Kolejne instrukcje warunkowe dotyczą już przypadków uruchomienia bez argumentów lub z argumentami, ale z pierwszym argumentem różnym od "/?". Sprawdzamy najpierw czy podano jakikolwiek argument. Trzecia istrukcja IF dotyczy przypadku: podano co najmniej jeden argument i argument pierwszy jest nazwą pliku. Wówczas usuwamy plik jeżeli jest to jedyny argument lub wypisujemy komunikat o błędzie gdy podano więcej niż jedną nazwę pliku. Ilość podanych argumentów, a właściwie to czy argument jest jeden, sprawdzamy porównując argument drugi %2 z napisem pustym. Ostatnie IF dotyczy już tylko przypadku: podano dokładnie jeden argument będący nazwą pliku - pozostaje więc sprawdzić czy podany plik istnieje. Instrukcja CALL Jak wspomniano na początku w pliku wsadowym można używać dowolnych poleceń wewnętrznych i programów wykonywalnych (com i exe). Polecenie pliku wsadowego nie może natomiast być plikiem wsadowym. Uruchomienie w pliku wsadowym innego pliku wsadowego wymaga zastosowania polecenia: 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ą. Pętle często stosuje się w połączeniu z instrukcją. Polecenie wykonuje tzw. przesunięcie argumentów, tzn. argument pierwszy %1 zastępowany jest przez argument drugi %2, argument

drugi %2 zastępowany jest przez argument trzeci %3, itd. Ogólnie: argument %N zastępowany jest przez argument %(N+1). UWAGA: W wyniku wykonania polecenia argument pierwszy pliku wsadowego jest bezpowrotnie tracony - nie ma możliwości odwołania się do tego argumentu. Demonstruje to poniższy przykład: 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 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. Po piątym wywołaniu wszystkie argumenty mają wartość pustą!. Ogólnie: jeżeli plik wsadowy uruchomiony został z N argumentami, to po N-1 wykonaniu instrukcji ostatni z podanych argumentów znajduje się na miejscu %1, po wykonaniu N-tym plik wsadowy w ogóle nie ma 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. IF "%1" == "/?" GOTO Informacja :Start IF "%1" == "" ECHO %1 >> argument.txt GOTO Start :Informacja ECHO Umieszcza w pliku argument.txt wszystkie podane argumenty. ECHO Składnia polecenia: ECHO ARGUMENT [/?] [arg1 arg2...] 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. Najważniejszą instrukcją każdej pętli jest instrukcja przerwania pętli, czyli przeniesienia wykonywania pliku poza pętlę. W tym wypadku zadanie to wykonuje polecenie IF, które sprawdza nie pustość argumentu %1. Cały cykl powtarzany jest tak długo aż argument %1 osiągnie wartość napisu

pustego. Ponieważ wewnątrz pętli występuje polecenie w którymś momencie skończą się argumenty pliku i wykonywanie pętli zostanie zakończone. Konstruując pętlę należy zawsze stworzyć warunki umożliwiające jej zakończenie. Nietrudno przewidzieć jaki efekt można osiągnąć po usunięciu z powyższego pliku instrukcji. Wówczas podczas wykonywania pętli argumenty nie ulegałyby żadnym zmianom co oznacza, że pętla mogłaby się nigdy nie skończyć. Ten sam skutek przyniosłoby usunięcie instrukcji wyjścia z pętli IF. W tym wypadku argumenty do ich wyczerpania ulegałyby zmianom, nie wpłynęłoby to jednak na instrukcję GOTO Start, która zawsze wykonywałaby skok do podanej etykiety. Taką sytuację nazywamy często "zapętleniem lub powieszeniem programu". 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. Warto pamiętać: 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 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: Plik wsadowy usuwający wszystkie pliku podane w postaci argumentów. BREAK ON :Start IF "%1" == "" CALL mydel.bat %1 GOTO Start 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. Z możliwości tej programy nie zawsze korzystają i często program nie pozostawia po sobie żadnej informacji - wówczas system operacyjny traktuje taki stan zakończenia jako poprawny i przyjmuje, że zakończony program pozostawił po sobie kod zero (często mówimy też, że program zakończył się z kodem zero). Nie oznacza to wcale, że liczby różne od zera oznaczają błędne zakończenie programu; jest to często przyjmowana w informatyce reguła na mocy której liczba zero oznacza poprawne wykonanie określonej operacji. 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). Z tej postaci instrukcji warunkowej korzystać będziemy wyłącznie przy sprawdzaniu kodu wyjścia polecenia CHOICE, które stosuje się w systemie MS-DOS do zadawania różnego rodzaju pytań. Składnia polecenia jest następująca: 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. Po wydaniu polecenia: 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. Program po wyborze odpowiedniego klawisza bądź po upływie dopuszczalnego czasu kończy swoje działanie zwracając do systemu operacyjnego kod wyjścia, który jest numerem odpowiedzi na podanej liście, tzn. po wyborze A program zwróci 1, po wyborze B liczbę 2, zaś po wyborze X liczbę 3. Przykład: plik wsadowy, który będzie potrafił uruchomić jeden z dwóch programów w zależności od wyboru użytkownika, np. MS Write lub MS Paint. :Start CLS ECHO _ ECHO _ ECHO [ 1 ]. MS Write ECHO [ 2 ]. MS Paint ECHO [ Q ]. Zakończ ECHO _ ECHO _ CHOICE /C:123Q /N "Wybierz program do uruchomienia : " IF ERRORLEVEL 3 IF ERRORLEVEL 2 GOTO Pascal ECHO Trwa uruchamianie MS Write... C:\Windows\System32\write.exe :Windows ECHO Trwa uruchamianie MS Paint... C:\Windows\System32\mspaint.exe 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. Podane w pliku ścieżki dostępu muszą oczywiście być poprawne - można je nawet zmienić na ścieżki do innych programów. 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 lub 3. 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. Pozostaje tylko dodać, że uruchomienia systemu Windows podczas pracy Windows jest raczej niewykonalne i zakończy się odpowiednim komunikatem. Można to jednak zrobić podczas pracy trybu MS-DOS (tryb MS-DOS jest czymś innym niż Wiersz poleceń). Kto zamierza to sprawdzić, powinien odnaleźć plik C:\autoexec.bat i w ostatnim wierszu tego pliku wpisać polecenie uruchamiające powyższy plik wsadowy, czyli np. CALL C:\TEMP\mymenu.bat. Przykład: Jako drugi przykład wykorzystania trzeciej postaci instrukcji warunkowej: plik wsadowy zmieniający nazwę pliku. Obsługę błędów oraz informacje o przeznaczeniu należy uzupełnić samodzielnie. BREAK ON :Usuwaj IF NOT EXIST %2 GOTO MoznaZmienic CHOICE /C:TN "Plik %2 już istnieje. Usunąć istniejący plik " IF ERRORLEVEL 2 DEL %2 > NUL :MoznaZmienic ECHO Przenoszenie %1 na %2 REN %1 %2 > NUL 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 Instrukcje iteracyjne (powtarzające, zwane też pętlami) służą w językach programowania do wielokrotnego wykonywania podobnych czynności. Ogólnie dzieli się instrukcje iteracyjne na pętle o znanej lub niemożliwej do przewidzenia z góry liczbie powtórzeń. Sformułowanie "o znanej liczbie powtórzeń" wymaga pewnego wyjaśnienia. Przez znaną ilość iteracji rozumie się tu ilość znaną nie w momencie pisania programu lub pliku wsadowego, tylko ilość znaną w momencie rozpoczęcia wykonywania pętli. I tak na przykład: jeżeli pętla zostanie powtórzona tyle razy ile plików zawiera katalog bieżący, to mimo iż nie możemy przewidzieć ile plików będzie zawierał katalog traktujemy tą pętlę jako pętlę o znanej liczbie powtórzeń - liczba tą będzie bowiem znana w momencie rozpoczynania pętli. Również omówiony wcześniej przykład pliku wsadowego, który usuwał wszystkie pliki podane jako argumenty jest przykładem pętli o znanej liczbie powtórzeń - plik można uruchomić z każdą liczbą argumentów, niemniej jednak liczba ta zawsze jest znana w momencie uruchomienia pliku wsadowego. A oto przykład pętli o niemożliwej do ustalenia z góry liczbie powtórzeń: :Start CHOICE /C:TN "Powtórzyć?"

IF ERRORLEVEL 2 GOTO Start 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. W przykładzie [2] będzie dokładnie tak samo z tą tylko różnicą że zmienna będzie przyjmować wartości "zadanie", "zadanie.bat" oraz "zadanie.bak". 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. Polecenie 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ązania Wszystkie 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. 1. Napisać plik wsadowy, który zamieni zawartość dwóch dowolnie wybranych plików. 2. 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. 3. Napisać plik wsadowy mycopy.bat służący do tworzenia kopii pliku pod inną nazwą, przyjmując następujące założenia: a. plik działa tylko w przypadku gdy został uruchomiony z dwoma różnymi argumentami,

b. jeżeli plik o takiej nazwie jak nazwa kopii już istnieje, to nie wykonujemy kopiowania.