Instrukcja numer SPD3/13_01/Z6 Pracownia internetowa w ka dej szkole (edycja 2004/2005 Opiekun pracowni internetowej cz. 3 (PD3 Pisanie skryptów wiersza polece - p tle Zadanie 06 P tle w skryptach wiersza polece Zadanie omawia zagadnienia zwi zane ze stosowaniem instrukcji p tli w skryptach wiersza polece. Przyk ad 18 Sk adnia instrukcji p tli FOR p18.cmd p18.cmd FOR %%w IN (pomidor, rzodkiewka, ziemniak DO echo To jest %%w Notatka Czy wielko ci liter w nazwach zmiennych u ywanych w p tli FOR maj znaczenie? Czy nazwa zmiennej stosowanej w p tli FOR mo e mie wi cej ni jeden znak? Czy inny znak ni przecinek mo e rozdziela zbiór warto ci definiowany dla p tli FOR? by Darek, Janusz, Andrzej, Robert NR SPD3/13_01/z6 [v. 1.1B] Strona 1/10
Przyk ad 19 P tla FOR ci g dalszy (p tla w p tli p19.cmd p19.cmd FOR %%o IN (garnek, patelnia DO ( FOR %%w IN (pomidorem, rzodkiewka, ziemniakem, burakiem DO echo To jest %%o z %%w Notatka ile razy zostanie wy wietlony ci g znaków pomidorem a ile razy ci g znaków patelnia? Przyk ad 20 P tla FOR ci g dalszy (p tla w p tli p20.cmd p20.cmd FOR %%a IN (0 1 2 3 DO ( FOR %%b IN (0 1 2 3 4 5 6 7 8 9 DO echo %%a%%b Notatka co charakteryzuje wy wietlane przez skrypt wyniki jego dzia ania? by Darek, Janusz, Andrzej, Robert NR SPD3/13_01/z6 [v. 1.1B] Strona 2/10
Przyk ad 21 Trzy p tle w sobie instrukcja FOR ci g dalszy p21.cmd p21.cmd echo Start > wynik.txt FOR %%a IN (0 1 2 3 DO ( FOR %%b IN (0 1 2 3 4 5 6 7 8 9 DO ( FOR %%c IN (0 1 2 3 4 5 6 7 8 9 DO ( echo %%a%%b%%c >>wynik.txt Notatka dlaczego nie wy wietlamy wyniku na ekranie, ale zapisujemy go do pliku? Przyk ad 22 P tle FOR i instrukcja warunkowa IF p22.cmd p22.cmd echo Start > wynik.txt FOR %%a IN (0 1 2 3 4 5 DO ( FOR %%b IN (0 1 2 3 4 5 6 7 8 9 DO ( FOR %%c IN (0 1 2 3 4 5 6 7 8 9 DO ( IF %%a%%b%%c LEQ 400 (echo %%a%%b%%c >>wynik.txt Notatka co oznacza operator LEQ? by Darek, Janusz, Andrzej, Robert NR SPD3/13_01/z6 [v. 1.1B] Strona 3/10
Przyk ad 23 P tle FOR i instrukcja warunkowa IF (ci g dalszy p23.cmd p23.cmd echo Start > wynik.txt FOR %%a IN (0 1 2 3 4 5 DO ( FOR %%b IN (0 1 2 3 4 5 6 7 8 9 DO ( FOR %%c IN (0 1 2 3 4 5 6 7 8 9 DO ( IF %%a%%b%%c GTR 0 IF %%a%%b%%c LEQ 375 (echo %%a%%b%%c >>wynik.txt Notatka jak swoimi s owami opiszesz instrukcj IF warunek_1 IF warunek_2 polecenie? Przyk ad 24 P tla FOR ci g dalszy parametr /L p24.cmd p24.cmd FOR /L %%a IN (5,1,25 DO echo %%a Notatka jak rol pe ni ka dy z trzech parametrów gdy p tla FOR wywo ywana jest z parametrem /L? by Darek, Janusz, Andrzej, Robert NR SPD3/13_01/z6 [v. 1.1B] Strona 4/10
Przyk ad 25 P tla FOR ci g dalszy parametr /L p25.cmd p25.cmd FOR /L %%a IN (25,-3,1 DO echo %%a Pause Notatka wnioski z wiczenia Przyk ad 26 Podstawianie pod zmienne kolejnych wierszy ze wskazanego pliku (parametr /F p26.cmd p26.cmd FOR /F %%a IN (lista.txt DO echo Plik zawiera takie wiersze %%a Notatka czy wy wietlone zosta y w ca o ci wiersze z pliku lista.txt? by Darek, Janusz, Andrzej, Robert NR SPD3/13_01/z6 [v. 1.1B] Strona 5/10
Polecenie do przyk adu 27 1. Zmodyfikuj plik lista.txt w podany poni ej sposób i zapisz pod nazw lista2.txt Jan Kowalski; Jan Masztalski; Beata Tyczka; Magda Szybka; Przyk ad 27 Podstawianie pod zmienne kolejnych wierszy ze wskazanego pliku p27.cmd p27.cmd FOR /F "delims=;" %%a IN (lista2.txt DO echo Plik zawiera takie wiersze %%a Pause Notatka co oznacza parametr delims u yty w instrukcji FOR? Polecenie do przyk adu 28 1. Skopiuj plik lista2.txt w podany poni ej sposób i zapisz pod nazw lista3.txt Jan;Kowalski; Jan;Masztalski; Beata;Tyczka; Magda;Szybka; by Darek, Janusz, Andrzej, Robert NR SPD3/13_01/z6 [v. 1.1B] Strona 6/10
Przyk ad 28 Podstawianie pod zmienne kolejnych elementów z wierszy ze wskazanego pliku p28.cmd p28.cmd FOR /F "delims=; tokens=1,2" %%a IN (lista3.txt DO echo Plik zawiera imie %%a nazwisko %%b Notatka jakie zmienne dodatkowe zosta y zadeklarowane automatycznie podczas wykonywania p tli FOR i jakie warto ci zosta y pod nie podstawione? Narysuj plik lista3.txt i zaznacz po jak zmienn jest przypisywane ka de s owo z tego pliku. Polecenie do przyk adu 29 1. Skopiuj plik lista2.txt i zapisz go pod nazw KlasaIa.txt Jan Kowalski; Jan Masztalski; Beata Tyczka; Magda Szybka; 2. Stwórz i zapisz pod nazw KlasaIb.txt plik zawieraj cy nast puj c tre : Marek Cichocki; Piotr Gruszka; Karolina Wielka; Dorota Piechocka; by Darek, Janusz, Andrzej, Robert NR SPD3/13_01/z6 [v. 1.1B] Strona 7/10
Przyk ad 29 Wyszukiwanie plików wed ug zadanej maski (parametr /R p29.cmd p29.cmd FOR /R %%b IN (klasa*.txt DO echo Znalezione pliki wedlug maski klasa*.txt to %%b Notatka w jakiej postaci wy wietlone zosta y nazwy znalezionych plików? Przyk ad 30 Podstawianie pod zmienne wierszy z wielu plików wyszukanych wed ug maski p30.cmd p30.cmd FOR /R %%b IN (klasa*.txt DO ( FOR /F "delims=;" %%a IN (%%b DO echo Plik %%b zawiera %%a Notatka ile razy zostanie wykonana wewn trzna p tla w powy szym przyk adzie? by Darek, Janusz, Andrzej, Robert NR SPD3/13_01/z6 [v. 1.1B] Strona 8/10
Podstawowe informacje o poleceniach i sk adni FOR %%litera in (lista warto ci DO polecenie Polecenie wykonywane jest tyle razy, ile warto ci zosta o okre lone na li cie warto ci. Kolejne warto ci na li cie mog by oddzielone znakiem spacji lub przecinkiem. Za ka dym wykonaniem zmienna %%litera przyjmuje kolejn warto z listy warto ci Mo na wykonywa wiele polece dla ka dej warto ci jak przyjmuje zmienna, je li polecenia zostan umieszczone w nawiasie okr g ym (jedno polecenie w jednej linii Zmienne wykorzystywane w p tli FOR mog przyjmowa tylko nazwy jednoliterowe i wa na jest ich wielko. FOR /L %%litera (od,krok,do DO polecenie FOR /F %%litera in (nazwa_pliku Polecenie wykonywane jest tyle razy, ile warto ci przejmie zmienna %%litera. Zmienna %%litera przyjmuje warto ci ze zbioru tworzonego z liczb poczynaj c od warto ci okre lonej przez od zwi kszan za ka dym wykonaniem p tli o warto okre lon przez krok, a do osi gni cia warto ci do (w cznie. Inne cechy jak okre lone wy ej. P tla wykona si tyle razy, ile wierszy posiada plik nazwa_pliku. Za ka dym wykonaniem zmienna %%litera przyjmuje jako warto ci g znaków od pocz tku wiersza do wyst pienia pierwszego znaku spacji lub ko ca wiersza. FOR /F delims=znak %%litera in (nazwa_pliku P tla wykona si tyle razy, ile wierszy posiada plik nazwa_pliku. Za ka dym wykonaniem zmienna %%litera przyjmuje jako warto ci g znaków od pocz tku wiersza do wyst pienia pierwszego znaku znak lub ko ca wiersza. FOR /F delims=znak tokens=x,z, %%litera in (nazwa_pliku DO polecenie FOR /R %%litera in (maska pliku DO polecenie FOR /? P tla wykona si tyle razy, ile wierszy posiada plik nazwa_pliku. Ka dy wiersz pliku dzielony jest na kolumny przez znak. Kolumny kolejno numerowane s poczynaj c od 1. Za ka dym wykonaniem zmienna %%litera przyjmuje jako warto ci g znaków znajduj cy si w kolumnie okre lonej przez liczbow warto x. Zmienna o nazwie kolejnej litery alfabetu przyjmuje w tym momencie warto znajduj c si w kolumnie okre lonej przez warto z. Algorytm jest powtarzany dla wszystkich kolumn, których numery s wymienione po parametrze tokens. Polecenie zostanie wykonane tyle razy, ile plików zosta o znalezionych wed ug maski w bie cym katalogu. Za ka dym wykonaniem pod zmienn %%litera podstawiana jest nazwa danego pliku. Maska pliku mo e wykorzystywa znaki wieloznaczne, takie jak * oraz? W ten sposób mo na uzyska znacznie wi cej informacji na temat p tli FOR Wyci g z pomocy znajduje si na nast pnej stronie. Notatki dotycz ce polece i ich sk adni by Darek, Janusz, Andrzej, Robert NR SPD3/13_01/z6 [v. 1.1B] Strona 9/10
Wyci g z pomocy wiersza polece (FOR /? %~I - rozwija %I usuwaj c wszystkie obejmuj ce cudzysłowy (" %~fi - rozwija %I do pełnej nazwy cie ki %~di - rozwija %I tylko do litery dysku %~pi - rozwija %I tylko do cie ki %~ni - rozwija %I tylko do nazwy pliku %~xi - rozwija %I tylko do rozszerzenia pliku %~si - rozwini ta cie ka zawiera tylko krótkie nazwy %~ai - rozwija %I do atrybutów pliku %~ti - rozwija %I do daty/czasu pliku %~zi - rozwija %I do rozmiaru pliku %~$PATH:I - przeszukuje katalogi wymienione w zmiennej rodowiskowej PATH i rozwija %I do pełnej nazwy dla pierwszej znalezionej. Je li nazwa zmiennej rodowiskowej nie została zdefiniowana lub pliku nie znaleziono w wyszukiwaniu, modyfikator rozwija do pustego ci gu. Modyfikatory mog by ł czone w celu uzyskania zło onych wyników: %~dpi %~nxi %~fsi - rozwija %I tylko do litery dysku i cie ki - rozwija %I tylko do nazwy pliku i rozszerzenia - rozwija %I tylko do pełnej nazwy cie ki z krótkimi nazwami %~dp$path:i - przeszukuje katalogi wymienione w zmiennej rodowiskowej PATH i rozwija %I do litery dysku i cie ki dla pierwszej znalezionej. %~ftzai - rozwija %I do DIR jak wiersz wyj ciowy Notatki dotycz ce polece i ich sk adni by Darek, Janusz, Andrzej, Robert NR SPD3/13_01/z6 [v. 1.1B] Strona 10/10