Oryginalne materiały do ćwiczenia znajdują się pod adresem:
Tryb linii komend i programowanie wsadowe w systemach DOS/Windows
Program "choice"
Spis poleceń
Start->Uruchom...->cmd
~1, ~2
itd./?
cd [..][/D][dysk:][ścieżka]
cd ..
cd c:\Winnt\Profiles
dir [dysk:][ścieżka][plik] [opcje]
/A | wyświetla pliki z określonymi atrybutami: D katalogi H pliki ukryte S pliki systemowe R pliki tylko do odczytu A pliki gotowe do archiwizacji - prefiks oznaczający negację atrybutu |
/B | używa prostego formatu wyświetlania |
/C | wyświetla w rozmiarach plików separator tysięcy |
/D | stosuje format szerokiej listy posortowanej kolumnami |
/L | używa małych liter |
/N | nowy format długiej listy (nazwy z prawej strony) |
/O | stosuje sortowanie: N wg nazw (alfabetycznie) E wg rozszerzeń (alfabetycznie) G katalogi na początku S wg rozmiarów (od najmniejszych) D wg dat i godzin (od najstarszych) - odwrócenie kolejności |
/P | wstrzymuje wyświetlanie po zapełnieniu ekranu |
/Q | wyświetla informacje o właścicielach plików |
/S | wyświetla pliki w określonym katalogu i wszystkich podkatalogach |
/T | określa które pole czasowe jest wyświetlane lub używane do sortowania |
/W | stosuje format szerokiej listy posortowanej wierszami |
/X | wyświetla krótkie nazwy dla plików |
/4 | wyświetla rok przy użyciu czterech liter |
dir /O:-S
dir c:\Winnt\system32 /-N
mkdir [dysk:]ścieżka
mkdir \ALA\OLA\ULA\ELA
rmdir [opcje] [dysk:]ścieżka
/S | usuwa wraz z określonym katalogiem wszystkie katalogi i pliki w nim umieszczone |
/Q | nie żąda potwierdzanaia usuwania nie pustych katalogów |
rmdir /S /Q Ala
copy [opcje] źródło [cel]
/A | oznacza plik tekstowy ASCII |
/B | oznacza plik binarny |
/V | weryfikuje, czy kopiowane pliki są poprawnie zapisywane |
/N | używa krótkich nazw plików |
/Y | nie monituje o potwierdzenie zastąpienia istniejącego pliku docelowego |
/-Y | monituje o potwierdzenie zastąpienia istniejącego pliku docelowego |
/Z | kopiuje pliki sieciowe w trybie restartowalnym |
copy /A /V *.txt \Ala
move [opcje] [dysk:][ścieżka]nazwa1 nazwa2
nazwa1
trzeba podać nazwy plików,
a jako nazwa2
należy podać katalog docelowy. Aby zmienić nazwę katalogu,
jako nazwa1
należy podać nazwę katalogu, którego nazwę chcemy zmienić,
a jako nazwa2
należy podać nową nazwę./Y | nie monituje o potwierdzenie zastąpienia istniejącego pliku docelowego |
/-Y | monituje o potwierdzenie zastąpienia istniejącego pliku docelowego |
move /Y C:\*.log c:\Logi
move C:\Logi c:\Dzienniki
rename [dysk:][ścieżka]nazwa1 nazwa2
set
.
Wywołanie polecenia set
bez argumentów spowoduje wyświetlenie
wszystkich aktualnie zdefiniowanych zmiennych środowiskowych. set nazwa_zmiennej=łańcuch_znaków
set nazwa_zmiennej=
%nazwa_zmiennej%
.PATH
.
Służy ona do przechowywania ścieżek dostępu do katalgó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 wpisnej w linii komend.
Do ustawiania tej zmiennej służy komenda path
z argumentem - listą katalogów.type [dysk:][ścieżka]nazwa_pliku
con
).
Istnieje mżliwość zmiany wejścia i wyjścia ze standardowych na inne. Wejściem może być plik,
a wyjściem plik lub drukarka. Istnieje również urządzenie puste - nul
.
Skierowanie wyjścia na to urządzenie spowoduje utratę wyjściowego ciągu znaków.
Operatorem przekierowania wyjścia jest znak >
zaś operatorem przekierowania wejścia jest znak <
.
help < pomoc.txt
copy con plik.txt
polecenie | filtr
polecenie | more [opcje]
/E | włącza rozszerzone funkcje |
/C | czyści ekran przed wyświetleniem strony |
/P | rozszerza znaki nowego wiersza |
/S | łączy sąsiednie puste wiersze w jeden wiersz |
/Tn | zmienia tabulatory na n spacji (domyślnie 8) |
/+n | zaczyna wyświetlanie od wiersza n |
type index.html | more +10
polecenie | sort [opcje]
/R | odwraca porządek sortowania |
/O plik | określa plik w którym mają zostać zapisane dane posortowane |
/+n | określa numer znaku, od którego na się rozpocząć każde porównywanie. Wiersze krótsze niż n znaków są sortowane przed innymi wierszami |
type miasta.txt | sort /R /O posortowane.txt
polecenie | find [opcje] "ciąg"
/V | wyświetla wszystkie wiersze nie zawierające podanego ciągu |
/C | wyświetla tylko liczbę wierszy zawierających szukany ciąg |
/N | wyświetla wiersze i ich numery |
/I | nie rozróżnia wielkich i małych liter |
type index.html | find /N /I "title"
date
time
prompt [tekst]
$A | & (znak ampersand) |
$B | | (potok) |
$C | ( (lewy nawias) |
$D | bieżąca data |
$E | kod Escape (kod ASCII 27) |
$F | ) (prawy nawias) |
$G | > (znak większe niż) |
$H | znak Backspace (kasuje poprzedni znak) |
$L | < (znak mniejsze niż) |
$N | bieżący dysk |
$P | bieżący dysk i ścieżka |
$Q | = (znak równości) |
$S | (spacja) |
$T | bieżąca godzina |
$V | numer wersji systemu |
$_ | powrót karetki i znak wysuwu wiersza |
$$ | $ znak dolara |
FOR %zmienna IN (zbiór) DO polecenie [parametry_polecenia]
%zmienna | Określa parametr wymienny. |
(zbiór) | Określa zbiór - jeden lub kilka plików. Używanie symboli wieloznacznych jest dozwolone. |
polecenie | Określa polecenie, które ma być wykonane dla każdego pliku. |
parametry_polecenia | Określa parametry lub opcje dla określonego polecenia. |
FOR
w programie wsadowym, wpisz
%%zmienna
zamiast %zmienna
.%i
różni się od %I
FOR
:FOR /D %zmienna IN (zbiór) DO polecenie [parametry-polecenia]
FOR /R [[dysk:]ścieżka] %zmienna IN (zbiór) DO polecenie [parametry-polecenia]
FOR /L %zmienna IN (początek,krok,koniec) DO polecenie [parametry-polecenia]
FOR /F ["opcje"] %zmienna IN (zbiórplików) DO polecenie [parametry-polecenia]
FOR /F ["opcje"] %zmienna IN ("ciąg") DO polecenie [parametry-polecenia]
FOR /F ["opcje"] %zmienna IN ('polecenie') DO polecenie [parametry-polecenia]
eol=c | określa znak komentarza końca wiersza (tylko jeden) |
skip=n | określa liczbę wierszy do pominięcia na początku pliku. |
delims=xxx | określa zestaw ograniczników. Zastępuje domyślny zestaw ograniczników (spację i tabulator). |
tokens=x,y,m-n | określa tokeny, które mają być przekazywane z każdego wiersza do głównego polecenia w każdej iteracji. Spowoduje to przydzielenie dodatkowych nazw zmiennych. m-n oznacza zakres, czyli tokeny od m-tego do n-tego. Jeśli ostatni znak ciągu tokens= jest gwiazdką, wówczas przydzielana jest dodatkowa zmienna, która otrzymuje pozostały tekst z wiersza po przydzieleniu ostatniego tokenu. |
usebackq | określa, czy wymuszane są nowe semantyki, gdzie ciąg w odwrotnych apostrofach jest wykonywany jako polecenie, a ciąg w apostrofach jest literałem polecenia i zezwala na użycie cudzysłowów dla nazw plików w zbiórplików. |
analizuje każdy wiersz w pliku mójplik.txt, ignorując wiersze rozpoczynające się od średnika, przekazuje drugi i trzeci token z każdego wiersza do głównego polecenia, z tokenami rozdzielonymi przecinkami i/lub spacjami. Zauważ, że dla głównego polecenia odwołanie instrukcji %i pobiera drugi token, %j trzeci token, a %k pobiera wszystkie pozostałe tokeny po trzecim. Dla nazw plików zawierających spacje, należy stosować cudzysłowy. Aby używać cudzysłowów w ten sposób, należy również użyć opcji usebackq, bo w przeciwnym razie cudzysłowy będą interpretowane do analizy jako ciąg literalny.FOR /F "usebackq delims==" %i IN (`zbiór`) DO @echo %i
%i jest deklarowane jawnie w instrukcji, a %j i %k są jawnie deklarowane poprzez opcję tokens=. Można określić do 26 tokenów za pomocą wiersza tokens=, nie próbując zadeklarowania zmiennej większej niż litera 'z' lub 'Z'. Pamiętaj, że nazwy zmiennej FOR uwzględniają wielkość liter, są globalne i nie można mieć ich aktywnych więcej niż 52 w tym samym czasie.
Można również użyć logicznego analizowania FOR /F na ciągu natychmiastowym umieszczejąc w apostrofach zbiórplików między nawiasami. Będzie to potraktowane jako pojedynczy wiersz wyjścia z pliku i przeanalizowane.
Na koniec, można też użyć polecenia FOR /F do analizy wyjścia polecenia. Dokonuje się tego umieszczając w odwrotnych apostrofach zbiórplików między nawiasami. Będzie to potraktowane jako wiersz polecenia, który jest przekazywany do podrzędnego programu CMD.EXE. Wyjście jest wtedy przechwytywane do pamięci i analizowane jakby był to plik.
Zobacz następujący przykład:
wyliczy nazwy zmiennych środowiskowych w bieżącym środowisku.Więcej informacji w pliku: polecenia.pdf
Ponadto, zostało ulepszone podstawianie odwołań zmiennej FOR.
Możesz teraz używać następującej opcjonalnej składni:
%~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 - rozwija %I tylko do litery dysku i ścieżki
%~nxI - rozwija %I tylko do nazwy pliku i rozszerzenia
%~fsI - 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
W powyższych przykładach %I i PATH można zastąpić innymi prawidłowymi wartościami. Składnia %~ jest zakończona prawidłową nazwą zmiennej FOR. Stosowanie dużych liter dla nazw zmiennych, jak np. %I czyni je czytelniejszymi i zapobiega myleniu z modyfikatorami, które nie uwzględniają wielkości liter.