Wykonuje określone polecenie dla wszystkich plików ze zbioru plików.
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ń są obsługiwane 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ó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]
lub, jeśli obecna jest opcja usebackq:
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]
zbiórplikó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 tokenów. Wówczas wywoływane jest główne
polecenie pętli, przy czym jako wartości zmiennych są przypisywane ciągi
znalezionych tokenów. Domyślnie opcja /F przekazuje pierwszy oddzielony
spacją token 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:
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 są wymuszane 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.
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. Należy zauważyć, ż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 przy użyciu opcji 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". Należy pamiętać, ż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órplików między nawiasami.
Będzie to potraktowane jako pojedynczy wiersz danych wejściowych 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. 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.
źródło: Pomoc systemowa Microsoft Windows 7 (net for)
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ń są obsługiwane 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ó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]
lub, jeśli obecna jest opcja usebackq:
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]
zbiórplikó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 tokenów. Wówczas wywoływane jest główne
polecenie pętli, przy czym jako wartości zmiennych są przypisywane ciągi
znalezionych tokenów. Domyślnie opcja /F przekazuje pierwszy oddzielony
spacją token 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:
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 są wymuszane 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.
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. Należy zauważyć, ż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 przy użyciu opcji 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". Należy pamiętać, ż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órplików między nawiasami.
Będzie to potraktowane jako pojedynczy wiersz danych wejściowych 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. 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.
źródło: Pomoc systemowa Microsoft Windows 7 (net for)