Polecenie: "FOR" jest włączone Windows 12, 11, 10, .. , MS Server 2025, 2022, 2019, .. dostępne
Przykłady polecenia "FOR"
The
`FOR`polecenie w wierszu poleceń systemu Windows służy do zapętlania plików wsadowych. Oto kilka przykładów:
Przykład 1: przeglądanie plików w katalogu w pętli:
FOR %G IN (informator\*) DO ECHO %G
Opis: To polecenie drukuje nazwę każdego pliku w określonym katalogu.
Przykład 2: Przeglądanie plików z określonym rozszerzeniem:
FOR %G IN (informator\*.txt) DO ECHO %G
Opis: Drukuje nazwę każdego pliku tekstowego w określonym katalogu.
Przykład 3: Rekursywna iteracja plików w podkatalogach:
FOR /R informator %G IN (*.txt) DO ECHO %G
Opis: Rekursywnie przegląda wszystkie podkatalogi określonego katalogu i wypisuje nazwę każdego pliku tekstowego.
Przykład 4: Przeglądanie liczb w określonym zakresie:
FOR /L %G IN (1,1,10) DO ECHO %G
Opis: Wyświetla liczby od 1 do 10.
Przykład 5: Zapętlanie znaków w ciągu:
FOR %G IN ("Cześć") DO ECHO %G
Opis: Drukuje każdą literę słowa „Witam”.
Przykład 6: Przeglądanie zawartości pliku linia po linii:
FOR /F "tokens=*" %G IN (plik.txt) DO ECHO %G
Opis: Iteruje po wierszach pliku „File.txt” i wyświetla każdą linię.
Przykład 7: Iteracja po zmiennych środowiskowych:
FOR %G IN (%PATH%) DO ECHO %G
Opis: Iteruje ścieżki w zmiennej środowiskowej
`PATH`i wyprowadza każdą ścieżkę.
Przykład 8: Użycie`SET`w pętli:
FOR %G IN (1 2 3) DO SET /A Numer=%G * 2 & ECHO Podwójne %G Jest %Numer%
Opis: Ustawia zmienną
`Numer`do dwukrotności bieżącej liczby w pętli i wypisuje to.
Przykład 9: Iteracja po podkatalogach i plikach:
FOR /R %G IN (*) DO ECHO %G
Opis: Rekurencyjnie przegląda wszystkie podkatalogi i pliki w bieżącym katalogu.
Przykład 10: Zagnieżdżone pętle:
FOR %G IN (1 2) DO FOR %H IN (A B) DO ECHO %G%H
Opis: Zagnieżdża dwie pętle i wypisuje wszystkie kombinacje %G i %H.
Należy pamiętać, że w plikach wsadowych
`%`Poprzez
`%%`należy wymienić. Na przykład:
`FOR %G IN (...) DO ECHO %%G`. W monicie bezpośrednim używany jest tylko jeden znak procentu (
`%`).
"FOR" Fragment Pomocy systemu Microsoft Windows
Microsoft Windows [Version 10.0.19045.3693]
(c) Copyright 1985-2023 Microsoft Corp.
C:\\Windows>
Wykonuje okreslone polecenie dla wszystkich plików ze zbioru
plików.
FOR %zmienna IN (zbiór) DO polecenie [parametry_polecenia]
%zmienna Okresla jednoliterowy parametr wymienny.
(zbiór) Okresla zbiór - jeden lub kilka plików. Uzywanie
symboli
wieloznacznych jest dozwolone.
polecenie Okresla polecenie, które ma byc wykonane dla kazdego
pliku.
parametry_polecenia
Okresla parametry lub opcje dla okreslonego
polecenia.
Aby uzyc polecenia FOR w programie wsadowym, wpisz %%zmienna
zamiast
%zmienna. W nazwach zmiennych rozróznia sie male i wielkie
litery,
tak wiec %i rózni sie od %I
Przy wlaczonych rozszerzeniach polecen obslugiwane sa nastepujace
dodatkowe
formy polecenia FOR:
FOR /D %zmienna IN (zbiór) DO polecenie [parametry-polecenia]
Jesli "zbiór" zawiera symbole wieloznaczne, to maja byc
poszukiwane
odpowiednie nazwy katalogów, a nie nazwy plików.
FOR /R [[dysk:]sciezka] %zmienna IN (zbiór) DO polecenie
[parametry-polecenia]
Wedruje po drzewie katalogów poczynajac od katalogu
[dysk:]sciezka,
wykonujac polecenie FOR w kazdym katalogu tego drzewa.
Jesli po /R nie podano zadnego katalogu, to uzywany jest
katalog biezacy.
Jesli "zbiór" jest okreslony tylko przez pojedynczy znak
kropki (.), to
polecenie wyliczy tylko zawartosc drzewa katalogów.
FOR /L %zmienna IN (poczatek,krok,koniec) DO polecenie
[parametry-polecenia]
W tym przypadku zbiór jest ciagiem liczb od wartosci
"poczatek" do wartosci
"koniec", zmieniajacych sie o wartosc "krok". Tak wiec
(1,1,5) generuje
ciag 1 2 3 4 5, a (5,-1,1) generuje ciag (5 4 3 2 1)
FOR /F ["opcje"] %zmienna IN (zbiórplików) DO polecenie
[parametry-polecenia]
FOR /F ["opcje"] %zmienna IN ("ciag") DO polecenie [parametry-
polecenia]
FOR /F ["opcje"] %zmienna IN ('polecenie') DO polecenie
[parametry-polecenia]
lub, jesli obecna jest opcja usebackq:
FOR /F ["opcje"] %zmienna IN (zbiórplików) DO polecenie
[parametry-polecenia]
FOR /F ["opcje"] %zmienna IN ('ciag') DO polecenie [parametry-
polecenia]
FOR /F ["opcje"] %zmienna IN (`polecenie`) DO polecenie
[parametry-polecenia]
zbiórplików jest jedna lub wieloma nazwami plików. Kazdy plik
jest
otwierany, odczytywany i przetwarzany przed przejsciem do
nastepnego
pliku z tego zbioru. Przetwarzanie polega na odczytaniu
pliku, podzieleniu
go na poszczególne wiersze tekstu i podzieleniu kazdego
wiersza na zero
lub wiecej leksemów. Wówczas wywolywana jest glówne polecenie
petli,
przy czym jako wartosci zmiennych sa przypisywane ciagi
znalezionych
leksemów. Domyslnie opcja /F przekazuje pierwszy oddzielony
spacja leksem
z pierwszego wiersza kazdego pliku. Puste wiersze sa
pomijane. Mozna
zmienic domyslny sposób podzialu wierszy okreslajac
opcjonalny parametr
"opcje". Jest to ciag umieszczony w cudzyslowie, który
zawiera jedno
lub wiecej slów kluczowych okreslajacych rózne parametry
podzialu.
Dostepne sa nastepujace slowa kluczowe:
eol=c - okresla znak komentarza konca wiersza
(tylko jeden)
skip=n - okresla liczbe wierszy do pominiecia na
poczatku
pliku.
delims=xxx - okresla zestaw ograniczników. Zastepuje
domyslny
zestaw ograniczników (spacje i
tabulator).
tokens=x,y,m-n - okresla tokeny, które maja byc
przekazywane
z kazdego wiersza do glównego polecenia
w kazdej
iteracji. Spowoduje to przydzielenie
dodatkowych
nazw zmiennych. m-n oznacza zakres,
czyli tokeny
od m-tego do n-tego. Jesli ostatni znak
ciagu
tokens= jest gwiazdka, wówczas
przydzielana jest
dodatkowa zmienna, która otrzymuje
pozostaly tekst
z wiersza po przydzieleniu ostatniego
tokenu.
usebackq - okresla, czy wymuszane sa nowe
semantyki,
gdzie ciag w odwrotnych apostrofach
jest wykonywany
jako polecenie, a ciag w apostrofach
jest literalem
polecenia i zezwala na uzycie
cudzyslowów dla nazw
plików w zbiórplików.
Przyklady, które moga pomóc:
FOR /F "eol=; tokens=2,3* delims=, " %i in (mójplik.txt) do @echo
%i %j %k
analizuje kazdy wiersz w pliku mójplik.txt, ignorujac wiersze
rozpoczynajace sie od srednika, przekazuje drugi i trzeci
token z kazdego
wiersza do glównego polecenia, z tokenami rozdzielonymi
przecinkami i/lub
spacjami. Zauwaz, ze dla glównego polecenia odwolanie
instrukcji %i
pobiera drugi token, %j trzeci token, a %k pobiera wszystkie
pozostale
tokeny po trzecim. Dla nazw plików zawierajacych spacje,
nalezy stosowac
cudzyslowy. Aby uzywac cudzyslowów w ten sposób, nalezy
równiez uzyc
opcji usebackq, bo w przeciwnym razie cudzyslowy beda
interpretowane do
analizy jako ciag literalny.
%i jest deklarowane jawnie w instrukcji, a %j i %k sa jawnie
deklarowane poprzez opcje tokens=. Mozna okreslic do 26
tokenów za pomoca
wiersza tokens=, nie próbujac zadeklarowania zmiennej
wiekszej niz litera
'z' lub 'Z'. Pamietaj, ze zmienne FOR sa jednoliterowe,
uwzgledniaja
wielkosc liter, sa globalne i nie mozna miec ich aktywnych
wiecej niz 52
w tym samym czasie.
Mozna równiez uzyc logicznego analizowania FOR /F na ciagu
natychmiastowym umieszczajac w apostrofach zbiórplików miedzy
nawiasami.
Bedzie to potraktowane jako pojedynczy wiersz wyjscia z pliku
i przeanalizowane.
Na koniec, mozna tez uzyc polecenia FOR /F do analizy wyjscia
polecenia.
Dokonuje sie tego umieszczajac w odwrotnych apostrofach zbiór
plików
miedzy nawiasami. Bedzie to potraktowane jako wiersz
polecenia, który
jest przekazywany do podrzednego programu CMD.EXE. Wyjscie
jest wtedy
przechwytywane do pamieci i analizowane jakby byl to plik.
Zobacz nastepujacy przyklad:
FOR /F "usebackq delims==" %i IN (`zbiór`) DO @echo %i
wyliczy nazwy zmiennych srodowiskowych w biezacym srodowisku.
Ponadto, zostalo ulepszone podstawianie odwolan zmiennej FOR.
Mozesz teraz uzywac nastepujacej opcjonalnej skladni:
%~I - rozwija %I usuwajac wszystkie obejmujace
cudzyslowy (")
%~fI - rozwija %I do pelnej nazwy sciezki
%~dI - rozwija %I tylko do litery dysku
%~pI - rozwija %I tylko do sciezki
%~nI - rozwija %I tylko do nazwy pliku
%~xI - rozwija %I tylko do rozszerzenia pliku
%~sI - rozwinieta sciezka 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
srodowiskowej
PATH i rozwija %I do pelnej nazwy dla pierwszej
znalezionej. Jesli nazwa zmiennej srodowiskowej
nie zostala
zdefiniowana lub pliku nie znaleziono w
wyszukiwaniu,
modyfikator rozwija do pustego ciagu.
Modyfikatory moga byc laczone w celu uzyskania zlozonych wyników:
%~dpI - rozwija %I tylko do litery dysku i sciezki
%~nxI - rozwija %I tylko do nazwy pliku i rozszerzenia
%~fsI - rozwija %I tylko do pelnej nazwy sciezki z
krótkimi
nazwami
%~dp$PATH:i - przeszukuje katalogi wymienione w zmiennej
srodowiskowej
PATH i rozwija %I do litery dysku i sciezki dla
pierwszej
znalezionej.
%~ftzaI - rozwija %I do DIR jak wiersz wyjsciowy
W powyzszych przykladach %I i PATH mozna zastapic innymi
prawidlowymi
wartosciami. Skladnia %~ jest zakonczona prawidlowa nazwa
zmiennej FOR.
Stosowanie duzych liter dla nazw zmiennych, jak np. %I czyni
je czytelniejszymi i zapobiega myleniu z modyfikatorami, które
nie uwzgledniaja wielkosci liter.
Ważna informacja, wskazówki dotyczące polecenia "FOR"
Podczas korzystania z
`FOR`w wierszu poleceń systemu Windows, należy zwrócić uwagę na kilka ważnych punktów:
1.
Składnia w plikach wsadowych: Jeśli masz
`FOR`polecenie w pliku wsadowym, musisz
`%`Poprzez
`%%`zastąpić. Na przykład:
`FOR %%G IN (...) DO ECHO %%G`.
2.
Użycie zmiennych: Zazwyczaj używasz zmiennych (np.
`%%G`) w
`FOR`-Pętla do przechowywania wartości. Należy pamiętać, że zmienne nie mogą uzyskać dostępu do przypisanych wartości poza pętlą.
SET Variable=Wartość początkowa
FOR %%G IN (Wartość1 Wartość2) DO SET Variable=%%G
ECHO %Variable%
Tutaj będzie
`%Variable%`zachowaj wartość „wartość początkowa”, ponieważ
`SET`-Instrukcja w osobnym
`FOR`pętla jest wykonywana.
3.
Spacje w ścieżkach lub nazwach plików: Jeżeli ścieżki lub nazwy plików zawierają spacje, ścieżkę lub nazwę pliku należy ująć w cudzysłów, aby zapewnić ich poprawną interpretację.
FOR %%G IN ("Katalog ze spacjami\Plik ze spacjami.txt") DO ECHO %%G
4.
Opcje dla`FOR /F`-Pętla: Jeśli
`FOR`w połączeniu z
`/F`opcja (np.
`FOR /F "tokens=*" %%G IN (plik.txt) DO ECHO %%G`), musisz znać składnię
`tokens`I
`delims`Dostosuj opcje ostrożnie, aby uzyskać pożądane rezultaty.
5.
Pętle zagnieżdżone: W przypadku pętli zagnieżdżonych należy zadbać o ich prawidłowe użycie
`%`Lub
`%%`zwróć uwagę, aby odniesienia do zmiennych znajdowały się we właściwej pętli.
FOR %%G IN (1 2) DO (
ECHO Pętla zewnętrzna: %%G
FOR %%H IN (A B) DO ECHO Pętla wewnętrzna: %%H
)
6.
Koniec linii pliku w`FOR /F`: Jeśli ty
`FOR /F`aby iterować po liniach w pliku, domyślnie każda linia aż do pierwszej spacji lub tabulatora jest uważana za token. Można to zrobić za pomocą opcji
`delims`regulować.
FOR /F "tokens=* delims=" %%G IN (plik.txt) DO ECHO %%G
7.
Opcje zmiennych daty i godziny: Jeśli posiadasz
`%DATE%`- Lub
`%TIME%`-Zmienne w jednym
`FOR`-Loop, należy zwrócić uwagę na ustawienia regionalne systemu, ponieważ format może się różnić.
8.
Iteracja plików z kodowaniem UTF-8: The
`FOR /F`polecenie może mieć trudności z iteracją plików z kodowaniem UTF-8. W takich przypadkach lepszym rozwiązaniem może być użycie innych narzędzi, np
`FINDSTR`używać.
Ważne jest, aby wziąć pod uwagę specyficzne wymagania danego przypadku użycia i
`FOR`-Dostosuj odpowiednio pętlę. Możesz
`FOR /?`w wierszu poleceń, aby wyświetlić pełną pomoc i wszystkie dostępne opcje.