Windows

Laboratorium Systemów Operacyjnych Komputerów Tryb linii komend i programowanie wsadowe w systemach DOS/Windows 1. Tryb linii komend Tryb linii komend...
10 downloads 2 Views 218KB Size
Laboratorium Systemów Operacyjnych Komputerów Tryb linii komend i programowanie wsadowe w systemach DOS/Windows 1. Tryb linii komend Tryb linii komend pozwala użytkownikowi na zlecanie wykonywania operacji systemowi operacyjnemu poprzez wpisywanie komend z klawiatury z pominięciem graficznego interfejsu użytkownika (GUI). Tryb ten występuje we wszystkich wersjach systemów DOS, Windows i Windows NT. W systemach DOS stanowił główny sposób komunikacji użytkownika z systemem. W systemach rodziny Windows jest istotnym uzupełnieniem tradycyjnego, okienkowego sposobu komunikacji. Wejście do trybu linii komend Komendy trybu linii komend dzielą się na: - wewnętrzne – zawarte w interpreterze komend command.com - zewnętrzne - niezależne programy uruchamiane z linii komend Komendy opisane w instrukcji są komendami wewnętrznymi. Nazwy plików w trybie linii komend są czytane i drukowane na ekranie standartowo są w formacie 8.3. Długie nazwy plików są dostępne poprzez wpisanie ich nazwy ujętej w cudzysłowy. Każda nazwa pliku występuje w wersji długiej i krótkiej. Standartowo, w trakcie pracy w okienkowym trybie Windows, każdy plik otrzymuje długą nazwę pliku. Wersja krótka jest wtedy tworzona automatycznie przez obcięcie długiej do 6 znaków i uzupełnienie jej końcówką „~1”, „~2” itd. Zadanie 1: - Uruchomić tryb linii komend (MS-DOS, Command prompt) 1.1 Podstawowe komendy - zmiana katalogu (folderu), składnia cd „nazwa katalogu”; cd .. powoduje cofnięcie się o jeden poziom w drzewie katalogowym dir - wyświetlenie zawartości aktualnego katalogu. W poszczególnych kolumnach znajdują się następujące informacje: - nazwa pliku 8.3 - długość pliku - data i czas ostatniej modyfikacji pliku - długa nazwa pliku mkdir - tworzy katalog na dysku rmdir,rd- usuwa katalog na dysku copy - kopiuje plik; składnia: copy plik1 plik2 move - przesuwa plik na dysku: move miejsce1/plik miejsce2/plik ren,rename - zmienia nazwę pliku cd

Zadanie 2: - w otwartym oknie linii komend przejść do swojego katalogu domowego korzystając z komendy cd - wyświetlić zawartość swojego katalogu domowego, zastosować różne parametry wywołania (zwrócić szczególną uwagę na komendę dir oraz na krótkie i długie nazwy plików) - stworzyć w swoim katalogu domowym katalog LAB, a następnie w nim podkatalogi KAT1 i KAT2 oraz podkatalog o długiej nazwie ”katalog trzeci”, tak by uzyskać następującą strukturę katalogów: ----- LAB ----- KAT1 ----- KAT2 ----- katalog trzeci - korzystając z opcji pomocy wyświetlić pomoc dla każdej z wyżej wymienionych komend (np. copy /?), a następnie skopiować do nowoutworzonych katalogów dowolne pliki ze swojego katalogu domowego

1.2 Zmienne środowiskowe Zmienne środowiskowe służą do przechowywania ważnych dla systemu informacji, w tym ścieżek dostępu do plików. Do wyświetlania, dodawania i usuwania zmiennych środowiskowych służy komenda set. Wywołanie komendy set bez argumentów spowoduje wyświetlenie wszystkich aktualnie zdefiniowanych zmiennych środowiskowych. Konstrukcja typu: set nazwa_zmiennej=łańcuch_znaków Spowoduje dopisanie nowej zmiennej o wartości ‘łańcuch_znaków’, na przykład: set katalog_windows=c:\windows spowoduje dodanie zmiennej katalog_windows o wartości ‘c:\windows’ Konstrukcja: set nazwa_zmiennej= Spowoduje usunięcie zmienne ‘nazwa_zmiennej’, zmienną ‘katalog_windows’ kasujemy przez set katalog_windows= Odwołanie do zmiennej następuje poprzez wywołanie %nazwa_zmiennej%. cd %katalog_windows% jest równoważne cd c:\windows Specjalne znaczenie ma zmienna środowiskowa PATH. Służy ona do przechowywania ścieżek dostępu do katalogów, do których użytkownik ma bezpośredni dostęp z linii komend. Określa ona gdzie – poza aktualnie wybranym katalogiem - poszukiwany jest program odpowiadający komendzie wpisanej w linii komend. Do ustawiania tej zmiennej służy komenda PATH z argumentem - listą katalogów Zadanie 3: - ustaw dowolną własną zmienną środowiskową - wyświetl wszystkie zmienne - usuń dodana wcześniej zmienną 1.3 Wejście i wyjście Do drukowania zawartości pliku na ekranie służy instrukcja: typ nazwa pliku Standartowo wejściem w trybie linii komend jest klawiatura, a wyjściem – monitor. Takie standardowe we/wy nosi nazwę konsoli (con). Istnieje jednak możliwość zmiany tych parametrów. Wejściem może być wtedy plik, wyjściem zaś plik lub np. drukarka. Istnieje też urządzenie puste – nul. Skierowanie wyjścia na to urządzenie spowoduje utratę wyjściowego ciągu znaków. Wyjście może być określane przy pomocy znaku ‘>’, wejście– ‘ nazwa_pliku type nazwa_pliku copy con nazwa_pliku

zapisanie zawartości katalogu w pliku o nazwie nazwa_pliku wyświetlenie na ekranie zawartośći pliku powoduje zapisane znaków wpisywanych z klawiatury w pliku o nazwie nazwa_pliku (powróty do trybu wpisywania komend CTRL+Z, ENTER)

2

1.4 Filtry i przetwarzanie potokowe Komunikaty wyświetlane przez każda komendę mogą stanowić dane wejściowe do innej, tzw. filtru. Pozwala to na porządkowanie i wyszukiwanie danych wyjściowych. Przetwarzanie, w którym strumień danych wyjściowych z jednego stanowi jednocześnie strumień danych wejściowych do innego nazywa się przetwarzaniem potokowym. Składnia:

komenda lista_parametrów | filtr

Dostępne filtry: more zatrzymuje wyświetlanie na wyjściu po wyświetleniu pełnego ekranu i czeka na wciśnięcie dowolnego klawisza, po wciśnięciu wyświetla nastepny ekran itd. (może być też samodzielną komendą) sort sortuje linie danych wejściowych find wynajduje informacje w strumieniu danych (może być też samodzielną komendą) Przykłady: type nazwa_pliku | sort > nazwa_pliku_2 - sortuje linie pliku o nazwie ‘nazwa_pliku’ i zapisuje je w pliku ‘nazwa_pliku_2’ dir | sort - wyświetla na ekranie zawartość katalogu w porządku alfabetycznym dir | more - równoważne ‘dir /p’ dir | find ”ciąg znaków” - wypisuje na ekranie jedynie te nazwy w bieżącym katalogu, które zawierają ”ciąg znaków” Zadanie 4: - wykonaj przykładowe komendy dla rzeczywistych plików i katalogów - przeczytaj pomoc dla opisanych komend i poeksperymentuj z parametrami wywołania - korzystając z komendy copy con moj_plik.txt zapisz w katalogu LAB\KAT1 kilka plików tekstowych (z rozszerzeniem ‘txt’) 1.5 Inne komendy date time prompt start

- drukuje na ekranie aktualną datę (i – w niektórych wersjach systemu – pozwala na jej ustawienie) - drukuje na ekranie aktualny czas (i – w niektórych wersjach systemu – pozwala na jego ustawienie) - pozwala na ustawienie znaku zachęty interpretera linii komend - uruchamia dowolną aplikacje w nowym oknie (argumentem jest nazwa programu)

Przykłady: start http://www.ee.pw.edu.pl start notepad start calc start command.com

- uruchamia okno ze stroną internetową Wydziału Elektrycznego PW - uruchamia notatnik - uruchamia kalkulator - otwiera kolejne okno trybu linii komend

Komenda start umożliwia uruchomienie dowolnego programu. Wpisując nazwę programu bezpośrednio w linii komend (nie poprzedzając jej komendą start) można uruchomić jedynie programy pracujące w trybie tekstowym – aplikacji okienkowych tak uruchomić nie można. Zadanie 5 - wykonać powyższe przykłady - uruchomić inne programy w ten sposób - sprawdzić – korzystając z pomocy ‘/?’ – działanie komend date, time i prompt

3

2. Programowanie wsadowe Program wsadowy jest to ciąg poleceń trybu linii komend lub wywołań programów zapisany w pliku o rozszerzeniu tekstowym o rozszerzeniu *.BAT. Celem programowania wsadowego jest: przyspieszenie pracy; personalizacja środowiska systemu operacyjnego. W języku programowania wsadowego można stosować wszystkie komendy dostępne w trybie linii komend. Do sterowania działaniem programu wsadowe służą komendy sterujące: uruchomienie programu wsadowego z poziomu innego programu wsadowego, a następnie powrót do programu źródłowego (odpowiednik procedury w językach wyższego rzędu); echo wyświetla komunikaty na ekranie, oraz może służyć do włączania lub wyłączania wyświetlania komunikatów; for powtarza komendę dla zestawu zmiennych; goto przejście do innej części programu; if wykonanie komendy w zależności od spełnienia warunku; pause zatrzymanie programu do czasu wciśnięcia dowolnego klawisza; rem komentarz; shift przesuwa parametry programu BATCH (%9 -> %8, ..., %1 -> %0); choice pozwala użytkownikowi wybrać opcję podczas wykonywania programu wsadowego. call

Informacje o sposobie wywołania komendy uzyskuje się poprzez wpisanie nazwy komendy z parametrem /? Np. if /? Nazwy programów wsadowych podlegają tym samym ograniczeniom, jak wszystkie nazwy plików w systemie – mogą posiadać także długie nazwy. Programy wsadowe uruchamia się podając w trybie interaktywnym nazwę pliku wsadowego. Plik wsadowy można także uruchomić w trybie okienkowym wybierając go poprzez podwójne (lub pojedyncze – zależnie od wersji systemu) kliknięcie klawiszem myszki – tak jak każdy inny program. Zatrzymać wykonywanie programu wsadowego można poprzez klawisze CTRL+S lub PAUSE. Wykonywanie programu jest kontynuowane po naciśnięciu dowolnego klawisza. Przerwać działanie programu można poprzez kombinację klawiszy CTRL+C lub CTRL+BREAK. Dalsze zadania - wykonać przykłady podane w kolejnych punktach instrukcji – każdy z podanych programów wsadowych napisać w dowolnym edytorze, zapisać w podkatalogu LAB, a następnie uruchomić. 2.1 Wyświetlanie komunikatów. Komunikaty w programach wsadowych można wyświetlać korzystając z instrukcji echo. Składnia: echo Treść komunikatu echo .

- wyświetla na ekranie Treść komunikatu. - wyświetla na ekranie linię pustą.

Przykład: btxt1.bat echo Program przesuwa pliki z katalogu KAT1 do katalogu KAT2 move KAT1 KAT2 dir KAT2 W celu wyświetlenia dużych tekstów, korzystniej jest zapisać ich treść w pliku tekstowym (np. *.txt) i wyświetlać używając instrukcji TYPE (przyspiesza to pracę, szczególnie w sieciach). Komenda echo może być również użyta do ograniczenia wyświetlania wykonywanych instrukcji programu wsadowego: echo off - wyłącza wyświetlanie wykonywanych instrukcji; echo on - włącza wyświetlanie wykonywanych instrukcji. Efekty podobny do użycia echo off dla pojedynczej instrukcji można osiągnąć poprzedzając instrukcję znakiem @.

4

Przykład: btxt2.bat @echo off echo Program kopiuje pliki tekstowe z katalogu KAT1 do KAT2 copy KAT2 KAT1 dir KAT1 2.2 Komenda Pause. Zatrzymanie programu można wymusić korzystając z komendy pause. Instrukcja pause wyświetla komunikat Press any key to continue . . . a następnie oczekuje na wciśnięcie dowolnego klawisza. Przykład: plik btxt3.bat @echo off echo Program kasuje pliki tekstowe w KAT2 echo Zaraz zaczne kasowac pause del KAT2\*.txt cls echo A oto efekt dir KAT2 W celu pominięcia wyświetlenia komunikatu wyjście komendy pause można skierować na wyjście nul. Przykład: echo Naciśnij dowolny klawisz pause > nul 2.3 Skok do etykiety Można zmienić kolejność wykonywania instrukcji programu poprzez instrukcję skoku GOTO. Składnia: GOTO etykieta - skok do instrukcji poprzedzonej przez etykietę etykieta. Etykiety definiuje się pisząc: :etykieta (nazwę etykiety poprzedzamy znakiem dwukropka). 2.4 Podprogramy W programach wsadowych można stosować podprogramy umieszczając je w osobnych plikach wsadowych, a wywołując je przy użyciu komendy call. Przykład:

plik btxt4.bat:

rem program do kopiowania plikow z KAT1 do LAB rem program wsadowy uruchamiany z katalogu LAB @echo off echo Program kopiuje pliki tekstowe pause call kopiuj cls echo To są pliki tekstowe w katalogu LAB dir /p plik kopiuj.bat rem kopiowanie z podkatalogu KAT1 do bieżącego katalogu rem (standartowo oznaczanego przez ’.’) copy KAT1 . Przykład należy wykonać w dwóch wersjach: poprzedzając nazwę podprogramu kopiuj w pliku bpas.bat instrukcją call oraz bez tej instrukcji. Zaobserwować różnicę w działaniu.

5

2.6 Programy z parametrami Programy wsadowe mogą być wywoływane z parametrami. Dostęp do parametrów z poziomu programu odbywa się przez użycie symboli %0 %9. Symbol %0 oznacza nazwę wykonywanego programu wsadowego. Symbole %1 %9 odpowiadają kolejnym parametrom. W sposób prosty można się odwołać do dziewięciu parametrów. Przykład:

btxt5.bat

@echo off echo Program kopiuje pliki tekstowe pause copy %1\*.txt %2 cls echo To są pliki tekstowe w katalogu docelowym określonym jako %2 dir %2 /p Wywołanie programu z katalogu domowego: Wywołanie programu z katalogu LAB (uwaga na kropkę!):

LAB\btxt5.bat LAB LAB\KAT2 btxt5.bat . KAT2

W celu użycia więcej niż 9 parametrów można zastosować instrukcję shift. Instrukcja shift przesuwa kolejne parametry, tak że parametr pierwszy staje się zerowym, drugi pierwszym, itd, aż parametr dziesiąty staje się dziewiątym. Do przesuniętych parametrów odwołujemy się poprzez symbole %0 %9. Przykład: btxt6.bat @echo off echo Program kopiuje pliki tekstowe echo z dwu katalogów do katalogu bieżącego copy %1\*.txt shift copy %1\*.txt cls echo To są pliki tekstowe w katalogu docelowym dir /p Wywołanie np. btxt6.bat KAT1 KAT2 2.7 Instrukcja warunkowa if W programach wsadowych można używać instrukcji warunkowej if. Składnia: If [not] errorlevel numer instrukcja

If [not] lancuch1==lancuch2 instrukcja

If [not] exist nazwa_pliku instrukcja

- wykonaj instrukcję instrukcja jeżeli kod wyjściowy z poprzedniego programu (errorlevel) [nie] jest niemniejszy niż numer; - wykonaj instrukcję instrukcja jeżeli łańcuch tekstowy lancuch1 [nie] jest równy łańcuchowi łancuch2; - wykonaj instrukcję instrukcja jeżeli [nie] istnieje plik o nazwie nazwa_pliku.

Nawias [] oznacza część opcjonalną instrukcji.

6

Przykład: btxt7.bat if "%1"=="kopiuj" goto FCOPY if "%1"=="przesun" goto FMOVE goto EXIT :FCOPY copy KAT1 KAT2 goto EXIT :FMOVE move KAT1 KAT2 :EXIT Wywołanie programu:

btxt7.bat kopiuj lub

btxt7.bat przesun

2.8 Instrukcja For Instrukcja for powtarza komendę dla każdej pozycji w zadanym zbiorze, przypisując danej zmiennej kolejno wartości z tego zbioru. Umożliwia ona uruchomianie określonego polecenia dla każdego pliku lub łańcucha znaków z podanego zbioru lub przetwarzanie danych zawartych w pliku. Składnia: FOR [opcja] [%% | %]x IN (zbiór) DO polecenie [parametry polecenia] Gdzie x oznacza zmienną sterującą. W przypadku gdy komenda for jest wpisywana w linii poleceń, nazwa zmiennej (x) poprzedzona musi być pojedynczym znakiem „%”. W przypadku, gdy komenda ta znajduje się w pliku wsadowym wymagane jest poprzedzenia jej: „%%”. Przykład: for %I in (c:\*.*) do @echo %I wyświetli listę plików (tylko plików) z katalogu głównego c:\ dodatkowe możliwości podstawienia typu %~fI %~zI omówione są w pomocy. użycie opcji (dla Windows NT/2000): /D umożliwia przetwarzanie katalogów. /R wykonuje polecenie w każdym katalogu podanego drzewa plików. for /R [[drive:]path] [%% | %]zmienna in (set) do ... /L określa zbiór jako sekwencję liczb przy określonym początku,końcu i kroku. for /L [%% | %]zmienna in (początek,koniec,krok) do polecenie [parametry polecenia] /F przetwarzanie z pliku for /F [%% | %]zmienna in (plik) do polecenie [parametry polecenia] np: for /F "eol=; tokens=2,3* delims=," %I in (myfile.txt) do @echo %I %J %K wyświetli przyjmując za %I drugą z kolumn oddzielonych przecinkami (delims) za %J trzecią, a za %K pozostałe za kolumna trzecią. Wiersz jest zakończony ; (eol). (więcej w pomocy polecenia for). Przykład plik btxt8.bat FOR %%x IN (LAB\KAT1\*.TXT LAB\KAT2\*.TXT) DO COPY %%x C:\LAB Przykład (wpisz z linii komend): FOR %I IN (c:\windows\*.*) DO @echo %I

7

2.9 Komunikacja z użytkownikiem W programowaniu wsadowym skomplikowanym zagadnieniem jest programowanie komunikacji z użytkownikiem programu. Polecenie choice wyświetla komunikat, zgłasza oczekiwanie na odpowiedź, wczytuje pojedynczy znak z klawiatury, a następnie ustawia kod wyjścia, który służy do identyfikacji wciśniętego klawisza. Składnia: CHOICE tekst Powoduje wyświetlenie na ekranie komunikatu w postaci:

tekst [Y,N]?

Jeżeli użytkownik wciśnie Y lub y CHOICE ustawi wartość kodu wyjścia jako 1; jeżeli N lub n kod wyjścia przyjmie wartość 2. Jeżeli użytkownik wciśnie CTRL+BREAK lub CTRL+C, CHOICE ustawi kod wyjścia jako 0. Wciśnięcie każdego innego klawisza powoduje wygenerowanie krótkiego dźwięku, a CHOICE będzie czekał na odpowiedź. Przy pomocy opcji /c:lista możemy rozszerzyć zakres dopuszczalnych odpowiedzi. Opcja /s umożliwia ustawienie rozróżniania dużych i małych liter. Przykładem użycia polecenia CHOICE może być system menu, z którego wybieramy określone opcje. Przykład: menu.bat @echo off :BEGIN cls echo User Menu echo. echo 1. Kalkulator echo 2. Notepad echo 3. Strona Wydzialu Elektrycznego echo.4. Koniec choice /c 1234 /m “Wybierz opcje” if errorlevel 4 goto END if errorlevel 3 goto WYDZIAL if errorlevel 2 goto 2 if errorlevel 1 goto 1 goto BEGIN :1 start calc goto BEGIN :2 start notepad goto BEGIN :WYDZIAL start http://www.ee.pw.edu.pl goto BEGIN :END Opracowali: J.S.,M.I.,D.S. Weryfikacja: 2011-03-16 W.G.

8