480 likes | 615 Views
Bibliografia: System operacyjny MS-DOS 4.0/5.0, M. Jankowski i A. Marciniak Windows XP. Komendy i polecenia. Praktyczne przykłady , P. Czarny. Procedury systemowe w systemie DOS.
E N D
Bibliografia: System operacyjny MS-DOS 4.0/5.0, M. Jankowski i A. Marciniak Windows XP. Komendy i polecenia. Praktyczne przykłady, P. Czarny Procedury systemowe w systemie DOS
Procedurą systemową (lub krótko procedurą) – nazywamy sekwencję poleceń systemu operacyjnego, umieszczoną w zbiorze tekstowym i przeznaczoną do wielokrotnego wykorzystania. Umieszczenie sekwencji poleceń w zbiorze ma na celu uniknięcie konieczności wielokrotnego wpisywania tych samych poleceń – oszczędność czasu i uniknięcie błędów przy wpisywaniu
Instrukcja warunkowa (if) – służy do sprawdzenia pewnego warunku i uzależnienia od niego wykonanie określonego polecenia. Uwaga:W procedurach systemowych instrukcja warunkowa ( if ) służy do sprawdzenia tylko jednego warunku i nie wolno jej zagnieżdżać (tzn. w obrębie jednej instrukcji if nie może kolejna instrukcja warunkowa). Ponadto całe zdanie z instrukcją if musi mieścić się w pojedynczym wierszu.
Składnia (definicja) instrukcji warunkowej: if warunekpolecenie lub if not warunek polecenie
Warunki sprawdzane za pomocą instrukcji if • identyczność dwu łańcuchów znakowych: • if %1 == ala type ala.txt • Jeśli parametr numer 1 ma postać identyczną z łańcuchem ala, to nastąpi wyświetlenie treści pliku ala.txt • if %pocz% == ola echo czesc ala • Jeśli zmienna %pocz% ma postać identyczną z łańcuchem ola, to na ekranie pojawi się napis czesc ala • if (%1) == () echo brak parametru • Jeśli parametr numer 1 jest równy łańcuchowi pustemu, to na ekranie pojawi się komunikat po słowie echo – brak parametru • if not %pocz% == ola type ala.txt • Jeśli zmienna %pocz% jest różna od łańcucha ola, to zostanie wyświetlona zawartość pliku ala.txt
Warunki sprawdzane za pomocą instrukcji if • istnienie zbioru dyskowego o danej nazwie: • if exist %1 type %1 • Jeśli istnieje zbiór o nazwie podanej parametrem numer 1, to zostanie wyświetlony na ekranie. • if not exist %1 echo brak poszukiwanego parametru • Jeśli nie istnieje zbiór o nazwie podanej parametrem numer 1, to zostanie wyświetlony napis brak poszukiwanego parametru • testowanie wartości wskaźnika błędu errorlevel,która jest generowana przez polecenie systemowe: • if errorlevel 1 echo wystapil blad • Jeśli wartość kodu wyjściowego polecenia (wymienionego wcześniej) jest równa 1, to na ekranie pojawi się napis wystapil blad
Zadanie 1 Napisz procedurę, która pliki określone pierwszym parametrem przekopiuje z katalogu danego drugim parametrem do katalogu danego trzecim parametrem. @echo off if (%1) == () goto koniec if (%2) == () goto koniec if (%3) == () goto koniec copy %2\%1 %3 :koniec
Zadanie 2 Napisz procedurę, która plikowi określonemu pierwszym parametrem /w katalogu danym drugim parametrem/ zmieni nazwę na nazwę daną trzecim parametrem. @echo off if (%1) == () goto koniec if (%2) == () goto koniec if (%3) == () goto koniec ren %2\%1 %3 :koniec
Zadanie 3 Napisz procedurę, która zaprezentuje działanie polecenia goto. Przebieg procedury ma być różny w zależności od liczby podanych parametrów w wierszu ją wywołującym. Należy podać komunikat o maksymalnej liczbie dopuszczalnych parametrów.
@echo off if (%1) == () goto nic if (%2) == () goto jeden if (%3) == () goto dwa echo UWAGA: procedura akceptuje maksymalnie dwa parametry goto koniec :dwa echo Parametr nr 1 : %1 echo Parametr nr 2 : %2 goto koniec :jeden echo Parametr nr 1 : %1 echo Parametr nr 2 : -- goto koniec :nic echo Parametr nr 1 : -- echo Parametr nr 2 : -- :koniec
Zadanie 4 3it Napisz procedurę, która sprawdzi istnienie pliku określonego pierwszym parametrem i jeśli istnieje – wypisze jego zawartość @echo off if exist %1 type %1
Zadanie 5 Napisz procedurę, która sprawdzi, czy zmienna pocz jest równa łańcuchowi ala, jeśli tak – to zostanie wypisany napis pocz = ala @echo on if %pocz% == ala echo pocz=ala
Instrukcja iteracyjna (for) – jest wykorzystywana do powtarzania poleceń w procedurach systemowych.
Składnia (definicja) instrukcji iteracyjnej: for %%zmienna in (zbiór-logiczny) do polecenie Podczas wykonywania instrukcji for, zmienna przyjmuje kolejne wartości ze zbioru logicznego i dla każdej z tych wartości jest wykonane polecenie. Nazwa zmiennej musi być pojedynczą literą alfabetu, a elementy zbioru powinny być łańcuchami alfanumerycznymi, oddzielonymi odstępami /spacjami/. Polecenie może, ale nie musi wykorzystywać aktualną wartość zmiennej.
Zadanie 1 Napisz procedurę systemową wydającą pięciokrotnie sygnał dźwiękowy. Dźwięk spowoduje znak sterujący [ 7 ] – Alt. for %%a in (1 2 3 4 5) do echo [ 7 ]
Zadanie 2 Napisz procedurę systemową tworzącą dziesięć kopii pliku ala.txt zawierających tekst Ala ma kota. echo Ala ma kota >ala.txt for %%a in (0 1 2 3 4 5 6 7 8 9) do copy ala.txtala%%a.txt
Zadanie 3 Napisz procedurę systemową wykonującą pętle tyle razy ile wynosi wartość parametru podanego przy wywołaniu procedury. Jako polecenie niech pojawia się napis: wywołanie procedury.
@echo on if (%1) == () goto niedobrze for %%a in (1 2 3 4 5 6 7 8 9 10) do if %%a == %1 goto razy %%a goto niedobrze :razy10 echo wywolanie procedury goto koniec :razy9 echo wywolanie procedury goto koniec .... :razy1 echo wywolanie procedury goto koniec :niedobrze echo UWAGA! echo parametrem musi być liczba calkowita od 1 do 10 :koniec
Instrukcja shift – jest wykorzystywana do powtarzania „skoku” do etykiety w celu wykonania poleceń w procedury zawartych po etykiecie, do której został wykonany skok.
Zadanie 1 Napisz procedurę systemową wypisującą na ekranie napis „Moja procedura” w ilości wierszy określonych przez parametr podany przy wywołaniu procedury. @echo off :start if (%1) ==() goto koniec echo Moja procedura shift goto start :koniec
Zadanie 2 Napisz procedurę systemową dopisującą do piku zad5.dat dowolne słowa podane jako parametr przy wywołaniu procedury. @echo off : start if (%1) == () goto koniec echo %1>>zad5.dat shift goto start : koniec
Zadanie 3 Napisz procedurę, która tworzy plik o nazwie podanej przez parametr i zapisuje do niego tekst podany przez kolejny parametr.
@echo off echo Wciśnij jakikolwiek klawisz pause>>nul if (%1) == () goto koniec1 if (%2) == () goto koniec2 set plik=%1 :petla shift if (%1) == () goto end echo %1>>%plik% goto petla :koniec1 echo Nie podales nazwy pliku goto end :koniec2 echo Za malo parametrow :end
Zadanie 4 Napisz procedurę „atrybut”, która plikowi danemu pierwszym parametrem znajdującemu się w katalogu danym drugim parametrem nada atrybuty dane następnymi parametrami.
@echo off if (%1) == () goto koniec if (%2) == () goto koniec set x=%1 set y=%2 shift shift :start if (%1) == () goto koniec attrib +%1 %y%\%x% shift goto start : koniec
Zadanie 5 Napisz procedurę „kasuj”, która kasuje pliki dane parametrami procedury znajdujące się w katalogu ALA na dysku A: @echo :start if (%1) == goto koniec del C:\ALA\%1 shift goto start :koniec
Zadanie 6 Napisz procedurę „dopisz”, która sprawdza istnienie pliku danego pierwszym parametrem w katalogu danym drugim parametrem. Jeżeli plik istnieje dopisuje do niego pozostałe parametry procedury, a jeżeli nie istnieje tworzy go i dopisuje do niego pozostałe parametry procedury.
@echo off if (%1) == () goto koniec if (%2) == () goto koniec set x=%1 set y=%2 shift shift if exist c:\%y%\%x% goto start : start if (%1) == () goto koniec echo %1 >>c:\%y%\%x% shift goto start : koniec
Zadanie 1 Napisz procedurę „plik”, która wyświetli zawartość pliku danego pierwszym parametrem z katalogu danego drugim parametrem. Zadanie 2 Napisz procedurę „atrybuty”, która wyświetli atrybuty plików danych pierwszym parametrem z katalogu danego drugim parametrem. Zadanie 3 Napisz procedurę, która kopiuje pliki dane pierwszym parametrem z katalogów danych pozostałymi parametrami do katalogu MOJ na dysku C.
Zadanie 4 Napisz procedurę, która z katalogu będącego pierwszym parametrem przekopiuje do katalogu będącego drugim parametrem pliki określone następnymi parametrami. Zadanie 5 Napisz procedurę, która utworzy na dysku katalog roboczy, a w nim zapisze dane parametrami procedury. Zadanie 6 Napisz procedurę ,która dopisze do pliku cos.txt wszystkie parametry tej procedury.
Zadanie 7 Utwórz plik wsadowy dopisujący do pliku imie.txt nazwisko po wybraniu opcjonalnie klawisza (A) lub zakończy procedurę po wybraniu klawisza (B).
Zadanie 1 Napisz procedurę „plik”, która wyświetli zawartość pliku danego pierwszym parametrem z katalogu danego drugim parametrem. @echo off if (%1) == () goto koniec if (%2) == () goto koniec type %2\%1 : koniec
Zadanie 2 Napisz procedurę „atrybuty”, która wyświetli atrybuty plików danych pierwszym parametrem z katalogu danego drugim parametrem. @echo off if (%1) == () goto koniec if (%2) == () goto koniec attrib %2\%1 : koniec
Zadanie 3 Napisz procedurę, która kopiuje pliki dane pierwszym parametrem z katalogów danych pozostałymi parametrami do katalogu MOJ na dysku C.
@echo off if (%1) == () goto koniec set plik=%1 shift : start if (%1) == () goto koniec copy %1\%plik% C:\ MOJ shift goto start : koniec
Zadanie 4 Napisz procedurę, która z katalogu będącego pierwszym parametrem przekopiuje do katalogu będącego drugim parametrem pliki określone następnymi parametrami.
@echo off if (%1) == () goto koniec if (%2) == () goto koniec set kat1(dowolne) x/=%1 (podstawia za kat1 %1) set kat2 = %2 shift shift : start if (%1) == () goto koniec copy %kat1%\%1 %kat2% ---co------ --gdzie— shift goto start : koniec
Zadanie 5 Napisz procedurę, która utworzy na dysku katalog roboczy, a w nim zapisze dane parametrami procedury. @echo off md c:\roboczy : start if (%1) == () goto koniec md c:\roboczy\%1 shift goto start : koniec
Zadanie 6 Napisz procedurę ,która dopisze do pliku cos.txt wszystkie parametry tej procedury. :start if (%1) == ( ) goto koniec echo %1>>C:\cos.txt shift goto start :koniec
Zadanie 7 Utwórz plik wsadowy dopisujący do pliku imie.txt nazwisko po wybraniu opcjonalnie klawisza (A) lub zakończy procedurę po wybraniu klawisza (B)
@echo off echo a dopisz nazwisko echo b koniec procedury choice / c: a – lub+/ wybierz klawiszy a,b if errorlevel == b goto k if errorlevel == a goto d :d echo (nazwisko)>>imię.txt :k echo koniec