Jezyki skryptowe – wykład 3 - Polecenia powłoki systemu Windows

Transkrypt

Jezyki skryptowe – wykład 3 - Polecenia powłoki systemu Windows
Jezyki
˛
skryptowe – wykład 3
Polecenia powłoki systemu Windows, budowa skryptów
Grzegorz Bazydło, Grzegorz Łabiak
Instytut Inżynierii Elektrycznej
Wydział Informatyki, Elektrotechniki i Automatyki
Uniwersytet Zielonogórski
17 października 2016
Grzegorz Bazydło, Grzegorz Łabiak (IIE)
Wykład 3 \ \
17 października 2016
1 / 26
Outline
1
Literatura
2
Podstawowe informacje
3
Polecenia powłoki
4
Znaki specjalne i wyrażenia regularne
5
Zasady konstrukcji skryptów
6
Wybrane polecenia powłoki (cd.)
Grzegorz Bazydło, Grzegorz Łabiak (IIE)
Wykład 3 \ \
17 października 2016
2 / 26
Literatura I
Albing C., Vossen J.P., Newham C.
Bash. Receptury
Helion, Gliwice, 2012
Pash A., Trapani G.
Lifehacker. Jak żyć i pracować z głowa˛
Helion, Gliwice, 2012
Pash A., Trapani G.
Lifehacker. Jak żyć i pracować z głowa.
˛ Kolejne wskazówki
Helion, Gliwice, 2013
Grzegorz Bazydło, Grzegorz Łabiak (IIE)
Wykład 3 \ Literatura\
17 października 2016
3 / 26
Podstawowe informacje na temat wiersza poleceń
Wiersz poleceń (ang. command line interpreter/interface, CLI), zwany
również konsola,
˛ to program systemu Windows, który umożliwia
interakcje˛ człowieka z komputerem
Interakcja z komputerem odbywa sie˛ poprzez wydawanie programowi
przez użytkownika (klienta) poleceń w postaci kolejnych linii tekstu (linie
poleceń)
Popularna˛ i równoważna˛ alternatywa˛ dla CLI jest graficzny interfejs
użytkownika, czyli tzw. interfejs okienkowy składajacy
˛ sie˛ m.in.
z przycisków, list rozwijalnych, okien dialogowych, itp.
Grzegorz Bazydło, Grzegorz Łabiak (IIE)
Wykład 3 \ Podstawowe informacje\
17 października 2016
4 / 26
Uruchamianie konsoli
Uruchamianie konsoli odbywa sie˛ przez wprowadzenie w okienku Run
(pol. Uruchom) polecenia cmd
1 Sposób: Start->Run->cmd i OK
2 Sposób: klawisze Windows + R i wprowadzamy polecenie cmd i OK
Użycie strzałek góra i dół umożliwia przegladanie
˛
historii wydanych
poleceń
Klawisz Tab automatycznie uzupełnia wprowadzone przez użytkownika
pierwsze litery nazw, do nazw plików lub katalogów istniejacych
˛
w
bieżacym
˛
katalogu
Grzegorz Bazydło, Grzegorz Łabiak (IIE)
Wykład 3 \ Podstawowe informacje\
17 października 2016
5 / 26
Przeglad
˛ poleceń powłoki systemu Windows
HELP – wyświetla liste
˛ wszystkich dostepnych
˛
poleceń powłoki wraz
z informacja˛ o każdym z nich
HELP polecenie – wyświetla szczegółowa˛ informacje˛ o wskazanym
poleceniu np. HELP DIR
polecenie /? – wyświetla szczegółowa˛ informacje˛ o wskazanym poleceniu
np. DIR /?
CLS
– czyści ekran konsoli
(np. D:) – zmienia bieżacy
˛ dysk logiczny
– zmienia bieżacy
˛ katalog na wskazany (katalog)
litera_dysku_logicznego:
CD katalog
CD – wyświetla bieżacy
˛ dysk i katalog
CD .. – zmienia bieżacy
˛ katalog na katalog leżacy
˛ poziom wyżej
w strukturze katalogów
CD \ – zmienia bieżacy
˛ katalog na najbardziej nadrz˛edny (główny)
w strukturze katalogów
DIR
– wyświetla zawartość bieżacego
˛
katalogu
DIR /p – ___ ___ ___ ___ z podziałem na strony
DIR /s – ___ ___ ___ ___ i wszystkich podkatalogów
DIR /b – ___ ___ ___ ___ w prostym (skróconym) formacie
Grzegorz Bazydło, Grzegorz Łabiak (IIE)
Wykład 3 \ Polecenia powłoki\
17 października 2016
6 / 26
Przeglad
˛ poleceń powłoki systemu Windows
– tworzy katalog o podanej nazwie (katalog)
– usuwa katalog o podanej nazwie (katalog)
DEL plik – usuwa wskazany plik (plik)
MOVE plik katalog – przenosi wskazany plik (plik) do wskazanego
katalogu (katalog)
REN plik_1 plik_2 – zmienia nazwe
˛ wskazanego pliku (plik_1) na nowa˛
(plik_2)
TYPE plik – wyświetla zawartość pliku tekstowego (plik)
MORE – wyświetla informacje ekran po ekranie
MD katalog
RD katalog
sposób wywołania: polecenie | MORE np. HELP | MORE
sposób wywołania: MORE < nazwa_pliku np. MORE < a.txt
DATE
– wyświetla bieżac
˛ a˛ date˛ systemowa˛ i umożliwia jej zmiane˛
DATE /t – wyświetla bieżac
˛ a˛ date˛ systemowa˛
ECHO ciag_znakow – wyświetla napis (ciag_znakow), np. ECHO napis
wyświetli tekst napis
ECHO OFF – wyłacza
˛
echo poleceń
ECHO ON – włacza
˛
echo poleceń
ECHO. – wyświetla pusta˛ linie˛ (zwróć uwage˛ na brak spacji)
Grzegorz Bazydło, Grzegorz Łabiak (IIE)
Wykład 3 \ Polecenia powłoki\
17 października 2016
7 / 26
Przeglad
˛ poleceń powłoki systemu Windows
SUBST litera sciezka
SUBST w: d:\muzyka
– przypisuje ścieżce litere˛ dysku wirtualnego np.
SUBST /d – usuwa przypisany dysk wirtualny
– wyświetla strukture˛ katalogów dysku lub ścieżki
– wykonuje
określone polecenie dla wszystkich plików ze zbioru plików, gdzie:
TREE
FOR %zmienna IN (zbior) DO polecenie [parametry]
- %zmienna – dowolna, jednoliterowa nazwa zmiennej (uwaga: w skrypcie użyj
%%zmienna)
- zbior – zbiór, jeden lub kilka plików (używanie symboli wieloznacznych jest
dozwolone)
- polecenie – polecenie, które ma być wykonane dla każdego pliku
- parametry – parametry lub opcje dla określonego polecenia (parametr
opcjonalny)
FOR %z IN (a.txt b.txt) DO TYPE %z – wyświetli zawartość plików
a.txt oraz b.txt
FOR %a IN (*.txt) DO @ECHO nazwa pliku: %a >> %a – do każdego
pliku tekstowego z bieżacego
˛
katalogu zostanie dopisany tekst zawierajacy
˛
nazwe˛ pliku (np. nazwa pliku: Obcy.txt); ponieważ użyto znaku @ na
ekranie nie zostana˛ wyświetlone poszczególne polecenia
Grzegorz Bazydło, Grzegorz Łabiak (IIE)
Wykład 3 \ Polecenia powłoki\
17 października 2016
8 / 26
Przeglad
˛ poleceń powłoki systemu Windows
FOR /L %zmienna IN (poczatek,krok,koniec) DO polecenie [parametry]
– wykonuje określone polecenie w petli
˛ – od wartości poczatek do
wartości koniec zmienianych o wartość krok np. (1,2,10) wygeneruje
kolejne liczby 1 3 5 7 9 (uwaga: w skrypcie użyj %%zmienna)
FOR /L %n IN (1,1,30) DO @ECHO Wiersz %n – wyświetli 30 linii
o wartościach „Wiersz 1”, „Wiersz 2”,. . ., „Wiersz 30”
FOR /L %N IN (1,1,10) DO ECHO plik%N > plik%N.txt – utworzy 10
kolejnych plików o nazwach plik1.txt, plik2.txt, . . ., plik10.txt
i zapisze do nich ich nazwy (bez rozszerzenia)
EXIT
– kończy prace˛ interpretatora poleceń
Grzegorz Bazydło, Grzegorz Łabiak (IIE)
Wykład 3 \ Polecenia powłoki\
17 października 2016
9 / 26
Znaki specjalne i wyrażenia regularne
– zastepuje
˛
jeden dowolny znak np. DIR plik_nr_??.txt
˛
dowolny ciag
˛ znaków np. DEL film*.*
* – zastepuje
?
– na poczatku
˛
linii oznacza, że ta linia nie bedzie
˛
wyświetlana (ale jej
efekt tak) np. @ECHO Witaj!
> – powoduje zapisanie danych do pliku (jeżeli plik istnieje, jest kasowany
i tworzony na nowo, jeżeli nie istnieje to jest tworzony); przykłady
wykorzystania:
@
DIR > plik.txt – zapisuje zawartość bieżacego
˛
katalogu do pliku
plik.txt
ECHO tekst > plik.txt – zapisuje ciag
˛ znaków „tekst” do pliku tekstowego
plik.txt
ECHO %date% > plik.txt – zapisuje aktualna˛ date˛ do pliku plik.txt
TYPE plik.txt > wynik.txt – przepisuje zawartość pliku plik.txt do
pliku wynik.txt
Grzegorz Bazydło, Grzegorz Łabiak (IIE)
Wykład 3 \ Znaki specjalne i wyrażenia regularne\
17 października 2016
10 / 26
Znaki specjalne i wyrażenia regularne
>> – powoduje dopisanie danych do pliku (jeżeli plik nie istnieje to jest
tworzony); przykłady wykorzystania:
DIR >> plik.txt – dopisuje zawartość bieżacego
˛
katalogu na końcu pliku
plik.txt
ECHO tekst >> plik.txt – dopisuje ciag
˛ znaków „tekst” na końcu pliku
tekstowego plik.txt
ECHO %date% >> plik.txt – dopisuje aktualna˛ date˛ na końcu pliku
plik.txt
TYPE plik.txt >> wynik.txt – dopisuje zawartość pliku plik.txt na
końcu pliku wynik.txt
Ctrl+C
– powoduje przerwanie wykonywania bieżacego
˛
polecenia
Grzegorz Bazydło, Grzegorz Łabiak (IIE)
Wykład 3 \ Znaki specjalne i wyrażenia regularne\
17 października 2016
11 / 26
Pliki wsadowe (skrypty)
Pliki wsadowe (ang. batch files), inaczej zwane skryptami, to tekstowe
pliki wykonywalne (uruchamiane np. w przegladarce
˛
plików), które
składaja˛ sie˛ z wierszy poleceń (wsad) powłoki systemu Windows
Plik wsadowy powinien mieć rozszerzenie .cmd lub .bat
W pliku wsadowym można wywoływać inne pliki wsadowe
Polecenia w pliku wykonywane sa˛ sekwencyjnie, w kolejności od
poczatku
˛
pliku do jego końca
Uruchomienie pliku .cmd lub .bat w przegladarce
˛
plików powoduje
automatyczne otwarcie okna konsoli, wykonanie poleceń skryptu i
zamkniecie
˛
okna konsoli
Grzegorz Bazydło, Grzegorz Łabiak (IIE)
Wykład 3 \ Zasady konstrukcji skryptów\
17 października 2016
12 / 26
Jak utworzyć skrypt
Wystarczy utworzyć plik tekstowy z rozszerzeniem .bat lub cmd i w jego
kolejnych wierszach wpisać polecenia powłoki systemu Windows
Uruchomienie w oknie konsoli polega na wpisaniu nazwy skryptu, tak
samo jak każde inne polecenie powłoki
W przegladarce
˛
plików wystarczy dwukrotnie kliknać
˛ nazwe˛ pliku ze
skryptem
Aby poprawnie wyświetlać polskie znaki diakrytyczne w skrypcie, należy
plik tekstowy ze skryptem zapisać w odpowiedniej stronie kodowej z
polskimi znakami, która jednocześnie musi być ustawiona w programie
konsoli, najcz˛eściej jest to OEM-852
Strona kodowa (ang. code page)
Odwzorowanie wartości liczbowych w zbiór znaków tekstu, cz˛esto połaczony
˛
ze zbiorem znaków sterujacych.
˛
Istnieja˛ różne zbiory znaków, m.in.
zawierajace
˛ polskie znaki diakrytyczne, jak np. OEM-852
Uwaga!
Konsola Windows nie wspiera zestawu znaków Unicode
Grzegorz Bazydło, Grzegorz Łabiak (IIE)
Wykład 3 \ Zasady konstrukcji skryptów\
17 października 2016
13 / 26
Zmienne i parametry wywołań w skrypcie
Do zmiennych petli
˛ FOR odwołujemy sie˛ poprzedzajac
˛ nazwe˛ zmiennej
dwoma procentami np.: %%zmienna
Do zmiennych utworzonych poleceniem SET odwołujemy sie˛ ujmujac
˛
zmienna˛ w procenty, np.:
SET imie=Grzegorz
echo %imie%
Napisy składajace
˛ sie˛ z odstepów
˛
trzeba ujać
˛ w znaki cudzysłowu, np.:
SET imie="Grzegorz Łabiak"
echo %imie%
Skrypty można wywoływać z parametrami przekazanymi z linii poleceń,
oddzielonymi odstepami
˛
np.:
parametry "Hello world!" Grzegorz 46
Do parametrów wyołania odwołujemy sie˛ poprzez ujecie
˛
kolejnego
numeru parametru w procenty, np. pierwszy parametr %1%, drugi to %2%,
itd.
Grzegorz Bazydło, Grzegorz Łabiak (IIE)
Wykład 3 \ Zasady konstrukcji skryptów\
17 października 2016
14 / 26
Skrypt Parametry
@echo off
rem Ustaw pierwszy przekazany parametr jako tytuł okna
title %1%
rem trzeci parametr to wiek
set /a rok=2016-%3%
rem drugi parametr to imi˛
e
echo Witaj %2%!
echo Twój rok urodzenia to %rok%
echo.
pause
echo on
Grzegorz Bazydło, Grzegorz Łabiak (IIE)
Wykład 3 \ Zasady konstrukcji skryptów\
17 października 2016
15 / 26
Wybrane polecenia powłoki systemu Windows
MODE con cp
– wyświetla strone˛ kodowa˛ konsoli
COLOR – ustawia kolor tekstu oraz tła okna konsoli (jako parametr należy
podać dwie cyfry heksadecymalne: pierwsza oznacza kolor tła a druga
kolor tekstu – np. COLOR 16 ustawi żółta˛ czcionk˛e na niebieskim tle
0 – Czarny
8 – Szary
1 – Niebieski
9 – Jasnoniebieski
2 – Zielony
A – Jasnozielony
3 – Błekitny
˛
B – Jasnobłekitny
˛
4 – Czerwony
C – Jasnoczerwony
5 – Purpurowy
D – Jasnopurpurowy
6 – Żółty
E – Jasnożółty
7 – Biały
F – Jaskrawobiały
– ustawia tytuł okna konsoli
– wyświetla bieżacy
˛ czas systemowy i umożliwia jego zmiane˛
TITLE tytul_okna
TIME
TIME /t – wyświetla bieżacy
˛ czas systemowy
Grzegorz Bazydło, Grzegorz Łabiak (IIE)
Wykład 3 \ Wybrane polecenia powłoki\
17 października 2016
16 / 26
Wybrane polecenia powłoki systemu Windows
FIND "ciag_znaków"
˛
plik – wyszukuje podany "ciag_znaków"
˛
w pliku
"plik" lub wielu plikach – jeżeli ciag
˛ zostanie znaleziony, oprócz nazwy
pliku zostanie wyświetlony cały wiersz zawierajacy
˛ ten ciag
˛
FIND /n "Ala" – wyświetla nazwe˛ pliku i wszystkie wiersze nie zawierajace
˛
ciagu
˛ znaków "Ala" (uwzgledniana
˛
jest wielkość liter)
FIND /i "ala" – wyświetla nazwe˛ pliku i wszystkie wiersze zawierajace
˛
ciag
˛ znaków "Ala", wielkość liter nie jest uwzgledniana
˛
FIND /c "Ala" – wyświetla tylko nazwe˛ pliku i liczbe˛ wierszy zawierajacych
˛
ciag
˛ znaków "Ala", wielkość liter jest uwzgledniana
˛
START polecenie – uruchamia program, skrypt lub polecenie w
oddzielnym oknie konsoli
SYSTEMINFO
VER
– wyświetla właściwości i konfiguracje˛ komputera
– wyświetla wersje˛ systemu Windows
CALL nazwa_pliku
– uruchamia w pliku wsadowym inny plik wsadowy lub
program
Grzegorz Bazydło, Grzegorz Łabiak (IIE)
Wykład 3 \ Wybrane polecenia powłoki\
17 października 2016
17 / 26
Skrypt Start
@echo off
echo Utworzenie katalogu "Test"
md Test
dir /b
start d.bat
echo.
echo Usuni˛
ecie katalogu "Test"
rd Test
dir /b
pause
echo on
Grzegorz Bazydło, Grzegorz Łabiak (IIE)
Wykład 3 \ Wybrane polecenia powłoki\
17 października 2016
18 / 26
Skrypt Call
@echo off
echo Utworzenie katalogu "Test"
md Test
dir /b
call d.bat
echo.
echo Usuni˛
ecie katalogu "Test"
rd Test
dir /b
pause
echo on
Grzegorz Bazydło, Grzegorz Łabiak (IIE)
Wykład 3 \ Wybrane polecenia powłoki\
17 października 2016
19 / 26
Wybrane polecenia powłoki systemu Windows
COPY zrodlo cel
lokalizacji (cel)
– kopiuje jeden lub wiecej
˛
plików (zrodlo) do innej
COPY /y *.* d:\ak2\ – kopiuje wszystkie pliki z bieżacego
˛
katalogu do
lokalizacji d:\ak2\ i wyświetla liste˛ skopiowanych plików (parametr /y
oznacza, że w przypadku gdy docelowy plik istnieje, system nie zapyta
użytkownika o decyzje˛ tylko nadpisze docelowy plik, ang. yes)
XCOPY zrodlo cel
– kopiuje pliki i drzewa katalogów
XCOPY /y /q *.* d:\ak2\ – kopiuje wszystkie pliki z bieżacego
˛
katalogu
do lokalizacji d:\ak2\ (parametr /y oznacza, że w przypadku gdy docelowy
plik istnieje, system nie zapyta użytkownika o decyzje˛ tylko nadpisze
docelowy plik; parametr /q oznacza, że nie zostanie wyświetlona lista
skopiowanych plików)
– służy do łaczenia
˛
kilku procesów w potok (najcz˛eściej poprzez
połaczenie
˛
standardowego wyjścia jednego procesu ze standardowym
wejściem drugiego) np. DIR /s | FIND "muzyka:" | MORE
REM – komentarz (w skrypcie) np. REM Komentarz
PAUSE – wstrzymuje przetwarzanie pliku wsadowego i wyświetla na
ekranie komunikat "Aby kontynuować, naciśnij dowolny klawisz..."
|
Grzegorz Bazydło, Grzegorz Łabiak (IIE)
Wykład 3 \ Wybrane polecenia powłoki\
17 października 2016
20 / 26
Polecenie warunkowe IF
Polecenie warunkowe IF organizuje warunkowe przetwarzanie w
skryptach. Oto trzy przykładowe użycia:
IF [NOT] ERROLEVEL liczba polecenie
IF [NOT] napis1 == napis2 polecenie
IF [NOT] EXIST nazwa_pliku polecenie
Znaczenie parametrów jest nastepuj
˛ ace:
˛
NOT – wykonuje polecenie jeśli warunek nie jest spełniony
ERRORLEVEL liczba – jest warunkiem prawdziwym jeśli ostatnio wykonany
program zakończył sie˛ z kodem wyjściowym (zwrócił do systemu
operacyjnego wartość) równym lub wiekszym
˛
od liczba
napis1 == napis2 jest warunkiem prawdziwym jeśli napisy sa˛ równe
EXIST nazwa_pliku jest warunkiem prawdziwym jeśli podany plik istnieje
polecenie – instrukcja do wykonania, o ile warunek jest prawdziwy. Po
poleceniu może wystapić
˛ opcjonalna klauzula ELSE ze swoim poleceniem,
które zostanie wykonane gdy warunek nie jest spełniony
Klauzula ELSE musi wystapić
˛ w tej samej linii co polecenie po IF
IF EXIST filename. (
DEL filename.
) ELSE (
ECHO filename. missing.
)
Grzegorz Bazydło, Grzegorz Łabiak (IIE)
Wykład 3 \ Wybrane polecenia powłoki\
17 października 2016
21 / 26
Skrypt If
@echo off
rem Utwórz katalog "Grzegorz" tylko, jeżeli nie istnieje
if not exist Grzegorz (
md Grzegorz
echo Katalog "Grzegorz" został utworzony
) else (
echo Katalog "Grzegorz" już istnieje
)
pause
echo on
Grzegorz Bazydło, Grzegorz Łabiak (IIE)
Wykład 3 \ Wybrane polecenia powłoki\
17 października 2016
22 / 26
Instrukcja skoku GOTO
Instrukcja GOTO kieruje wykonywanie poleceń w skrypcie do linii z etykieta˛
GOTO etykieta
gdzie etykieta jest napisem etykieta,
˛ docelowego adresu skoku
Etykieta oznaczajaca
˛ linie˛ poprzedzona jest dwukropkiem :
Wyrażenie %ERRORLEVEL% jest napisem, który reprezentuje numeryczna˛
wartość zmiennej ERRORLEVEL
Przykład
goto answer%ERRORLEVEL%
:answer0
echo Program had return code 0
:answer1
echo Program had return code 1
Grzegorz Bazydło, Grzegorz Łabiak (IIE)
Wykład 3 \ Wybrane polecenia powłoki\
17 października 2016
23 / 26
Skrypt Goto
@echo off
rem Utwórz katalog "Grzegorz" tylko, jeżeli nie istnieje
if exist Grzegorz (goto Istnieje
) else (
goto NieIstnieje
)
:Istnieje
echo Katalog "Grzegorz" już istnieje
rem należy przejść do sekcji "Koniec"
rem inaczej wykona si˛
e sekcja "NieIstnieje"
goto Koniec
:NieIstnieje
md Grzegorz
echo Katalog "Grzegorz" został utworzony
:Koniec
pause
echo on
Grzegorz Bazydło, Grzegorz Łabiak (IIE)
Wykład 3 \ Wybrane polecenia powłoki\
17 października 2016
24 / 26
Polecenie SET
Polecenie SET wyświetla, ustawia lub usuwa zmienna˛ środowiskowa˛ w
programie cmd.exe
SET [zmienna=[napis]]
gdzie:
- zmienna – nazwa zmiennej środowiskowej
- napis – ciag
˛ znaków przypisywany do zmiennej
Wywołanie SET bez parametrów wyświetla wszystkie zmienne
środowiskowe
SET
Wywołanie SET tylko z napisem/litera˛ (bez znaku = i wartości) wyświetli
bieżace
˛ wartości wszystkich zmiennych zaczynajacych
˛
sie˛ od
napisu/litery
SET P
Umożliwia nadanie zmiennej wartości linii wprowadzonej przez
użytkownika
SET /P variable=[promptString]
gdzie promptString jest tekstem zachety
˛
Grzegorz Bazydło, Grzegorz Łabiak (IIE)
Wykład 3 \ Wybrane polecenia powłoki\
17 października 2016
25 / 26
Skrypt Zmienne
@echo off
set nazwaprogramu=Program "Kartoteka"
title %nazwaprogramu%
echo Wpisz swoje imi˛
e:
set /p imie=">> "
echo Podaj wiek:
set /p wiek=">> "
set /a rok=2016-%wiek%
echo.
echo Witaj %imie%!
echo Twój rok urodzenia to %rok%
echo.
pause
echo on
Grzegorz Bazydło, Grzegorz Łabiak (IIE)
Wykład 3 \ Wybrane polecenia powłoki\
17 października 2016
26 / 26