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\Profilesdir [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 /-Nmkdir [dysk:]ścieżka
mkdir \ALA\OLA\ULA\ELArmdir [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 Alacopy [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 \Alamove [opcje] [dysk:][ścieżka]nazwa1 nazwa2nazwa1 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:\Dziennikirename [dysk:][ścieżka]nazwa1 nazwa2set.
Wywołanie polecenia set bez argumentów spowoduje wyświetlenie
wszystkich aktualnie zdefiniowanych zmiennych środowiskowych. set nazwa_zmiennej=łańcuch_znakówset 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_plikucon).
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.txtpolecenie | filtrpolecenie | 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 +10polecenie | 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.txtpolecenie | 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"datetimeprompt [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 %IFOR: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.
%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:
FOR /F "usebackq delims==" %i IN (`zbiór`) DO @echo %i
wyliczy nazwy zmiennych środowiskowych w bieżącym środowisku.
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.
Więcej informacji w pliku: polecenia.pdf