– polecenie systemu operacyjnego DOS, które służy do wykonywania określonego polecenia dla wszystkich plików ze zbioru plików.Składnia polecenia wygląda tak:
FOR %zmienna IN (zbiór) DO polecenie [parametry_polecenia]
%zmienna
– określa jednoliterowy 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.
Aby użyć polecenia FOR w programie wsadowym, wpisz %%zmienna
zamiast%zmienna
. W nazwach zmiennych rozróżnia się małe i wielkie litery, tak więc %i
różni się od %I
.
Przy włączonych rozszerzeniach poleceń obsługiwane są następujące dodatkowe formy polecenia FOR:
FOR /D %zmienna IN (zbiór) DO polecenie [parametry-polecenia]
Jeśli „zbiór” zawiera symbole wieloznaczne, to mają być poszukiwane odpowiednie nazwy katalogów, a nie nazwy plików.
FOR /R [[dysk:]ścieżka] %zmienna IN (zbiór) DO polecenie [parametry-polecenia]
Wędruje po drzewie katalogów poczynając od katalogu [dysk:]ścieżka, wykonując polecenie FOR w każdym katalogu tego drzewa. Jeśli po /R nie podano żadnego katalogu, to używany jest katalog bieżący. Jeśli „zbiór” jest określony tylko przez pojedynczy znak kropki (.), to polecenie wyliczy tylko zawartość drzewa katalogów.
FOR /L %zmienna IN (początek,krok,koniec) DO polecenie [parametry-polecenia]
W tym przypadku zbiór jest ciągiem liczb od wartości „początek” do wartości „koniec”, zmieniających się o wartość „krok”. Tak więc (1,1,5) generuje ciąg 1 2 3 4 5, a (5,-1,1) generuje ciąg (5 4 3 2 1)FOR /F ["opcje"] %zmienna IN (zbiór plików) DO polecenie [parametry-polecenia]
lub, jeśli obecna jest opcja usebackq:
FOR /F ["opcje"] %zmienna IN ("ciąg") DO polecenie [parametry-polecenia]
FOR /F ["opcje"] %zmienna IN ('polecenie') DO polecenie [parametry-polecenia]
FOR /F ["opcje"] %zmienna IN (zbiór plików) DO polecenie [parametry-polecenia]
zbiór plików jest jedną lub wieloma nazwami plików. Każdy plik jest otwierany, odczytywany i przetwarzany przed przejściem do następnego pliku z tego zbioru. Przetwarzanie polega na odczytaniu pliku, podzieleniu go na poszczególne wiersze tekstu i podzieleniu każdego wiersza na zero lub więcej leksemów. Wówczas wywoływane jest główne polecenie pętli, przy czym jako wartości zmiennych są przypisywane ciągi znalezionych leksemów. Domyślnie opcja /F przekazuje pierwszy oddzielony spacją leksem z pierwszego wiersza każdego pliku. Puste wiersze są pomijane. Można zmienić domyślny sposób podziału wierszy określając opcjonalny parametr „opcje”. Jest to ciąg umieszczony w cudzysłowie, który zawiera jedno lub więcej słów kluczowych określających różne parametry podziału. Dostępne są następujące słowa kluczowe:
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ór plików.
Przykłady, które mogą pomóc:FOR /F "eol=; tokens=2,3* delims=, " %i in (mójplik.txt) do @echo %i %j %k
– 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 zmienne FOR są jednoliterowe, 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 umieszczając w apostrofach zbiór plikó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ór plików między nawiasami. Będzie to potraktowane jako wiersz polecenia, który jest przekazywany do podrzędnego programu CMD.EXE lub COMMAND.COM. 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.
UWAGA: SKŁADNIA I OPIS POLECEŃ POCHODZI Z DOŁĄCZONEGO DO WINDOWS XP SYSTEMU DOS, TOTEŻ NIEKTÓRE POLECENIA BĄDŹ PRZEŁĄCZNIKI NIE BĘDĄ DZIAŁAĆ W POPRZEDNICH WERSJACH.