Notatka
Dostęp do tej strony wymaga autoryzacji. Może spróbować zalogować się lub zmienić katalogi.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
Uruchamia określone polecenie dla każdego pliku w zestawie plików.
Syntax
for {%% | %}<variable> in (<set>) do <command> [<commandlineoptions>]
Parameters
| Parameter | Description |
|---|---|
{%% \| %}<variable> |
Required. Reprezentuje parametr, który można zamienić. Użyj pojedynczego znaku procentu (%), aby wykonać polecenie for w wierszu polecenia. Użyj podwójnych znaków procentu (%%), aby wykonać polecenie for w pliku wsadowym. W zmiennych rozróżniana jest wielkość liter i muszą one być reprezentowane za pomocą wartości alfabetycznej, takiej jak %a, %blub %c. |
(<set>) |
Required. Określa co najmniej jeden plik, katalogi lub ciągi tekstowe lub zakres wartości, na których ma zostać uruchomione polecenie. Nawiasy są wymagane. |
<command> |
Required. Określa polecenie, które ma zostać wykonane dla każdego pliku, katalogu lub ciągu tekstowego albo dla zakresu wartości zawartych w zestawie. |
<commandlineoptions> |
Określa wszystkie opcje wiersza polecenia, które mają być używane z określonym poleceniem. |
| /? | Wyświetla pomoc w wierszu polecenia. |
Remarks
Tego polecenia można użyć w pliku wsadowym lub bezpośrednio z wiersza polecenia.
Do polecenia for mają zastosowanie następujące atrybuty:
To polecenie zastępuje
% variablelub%% variablez każdym ciągiem tekstowym w określonym zestawie, dopóki określone polecenie nie przetworzy wszystkich plików.W nazwach zmiennych jest uwzględniana wielkość liter, globalna i nie więcej niż 52 mogą być aktywne jednocześnie.
Aby uniknąć pomyłek z parametrami partii,
%0za pomocą%9, można użyć dowolnego znaku dla zmiennej z wyjątkiem cyfr od 0 do 9. W przypadku prostych plików wsadowych pojedynczy znak, taki jak%%fbędzie działać.Możesz użyć wielu wartości zmiennej w złożonych plikach wsadowych, aby rozróżnić różne zmienne wymienne.
Parametr set może reprezentować pojedynczą grupę plików lub kilka grup plików. Za pomocą symboli wieloznacznych (* i ?) można określić zestaw plików. Poniżej przedstawiono prawidłowe zestawy plików:
(*.doc) (*.doc *.txt *.me) (jan*.doc jan*.rpt feb*.doc feb*.rpt) (ar??1991.* ap??1991.*)W przypadku użycia tego polecenia pierwsza wartość w polu set zamienia
% variablewartość lub%% variable, a następnie określone polecenie przetwarza tę wartość. Trwa to do momentu, gdy wszystkie pliki (lub grupy plików), które odpowiadają ustawionej wartości, zostaną przetworzone.In i do nie są parametrami, ale należy ich użyć z tym poleceniem. Jeśli pominięto jeden z tych słów kluczowych, zostanie wyświetlony komunikat o błędzie.
Jeśli rozszerzenia poleceń są włączone (jest to ustawienie domyślne), obsługiwane są następujące dodatkowe formy for :
Tylko katalogi: Jeśli set zawiera symbole wieloznaczne (* lub ?), określone polecenie jest wykonywane dla każdego katalogu (zamiast zestawu plików w określonym katalogu), który pasuje do set. Składnia jest następująca:
for /d {%%|%}<variable> in (<set>) do <command> [<commandlineoptions>]Cykliczne: Przechodzi przez drzewo katalogów, które jest zakorzenione w drive:path i wykonuje instrukcję for w każdym katalogu drzewa. Jeśli po parametrze /r nie zostanie określony żaden katalog, jako katalog główny zostanie użyty bieżący katalog. Jeśli set to tylko pojedyncza kropka (.), wylicza tylko drzewo katalogów. Składnia jest następująca:
for /r [[<drive>:]<path>] {%%|%}<variable> in (<set>) do <command> [<commandlineoptions>]Iterowanie zakresu wartości: Użyj zmiennej iteracyjnej, aby ustawić wartość początkową (start#), a następnie przejść przez zestaw zakres wartości, dopóki wartość nie przekroczy ustawionej wartości końcowej (end#). /l wykonuje iterację, porównując start# z end#. Jeśli parametr start# jest mniejszy niż end#, polecenie jest wykonywane. Gdy zmienna iteracyjna przekroczy wartość end#, powłoka poleceń opuszcza pętlę. Możesz również użyć ujemnego kroku#, aby przejść przez zakres w malejących wartościach. Na przykład (1,1,5) generuje sekwencję 1 2 3 4 5 i (5,-1,1) generuje sekwencję 5 4 3 2 1. Składnia jest następująca:
for /l {%%|%}<variable> in (<start#>,<step#>,<end#>) do <command> [<commandlineoptions>]Iterowanie i analizowanie plików: Analizowanie plików umożliwia przetwarzanie danych wyjściowych poleceń, ciągów i zawartości pliku. Użyj zmiennych iteracyjnych, aby zdefiniować zawartość lub ciągi, które chcesz zbadać, i użyj różnych opcji parsingkeywords , aby dalej modyfikować analizowanie. Użyj opcji tokenu parsingkeywords , aby określić, które tokeny powinny być przekazywane jako zmienne iteracyjne. W przypadku użycia bez opcji token /f sprawdzi tylko pierwszy token.
Analizowanie plików składa się z odczytywania danych wyjściowych, ciągów lub zawartości pliku, a następnie podzielenia ich na poszczególne wiersze tekstu i analizowanie każdego wiersza na zero lub więcej tokenów. Pętla for jest następnie wywoływana z wartością zmiennej iteracyjnej ustawioną na token. Domyślnie /f przekazuje pierwszy pusty token oddzielony od siebie z każdego wiersza każdego pliku. Puste wiersze są pomijane.
Składnie to:
for /f [<parsingkeywords>] {%%|%}<variable> in (<set>) do <command> [<commandlineoptions>] for /f [<parsingkeywords>] {%%|%}<variable> in (<literalstring>) do <command> [<commandlineoptions>] for /f [<parsingkeywords>] {%%|%}<variable> in ('<command>') do <command> [<commandlineoptions>]Argument set określa jedną lub więcej nazw plików. Każdy plik jest otwierany, odczytywany i przetwarzany przed przejściem do następnego pliku w zestawie. Aby zastąpić domyślne zachowanie analizowania, określ parsingsłowa kluczowe. Jest to ciąg cytowany zawierający co najmniej jedno słowo kluczowe umożliwiające określenie różnych opcji analizowania.
Jeśli używasz opcji usebackq , użyj jednej z następujących składni:
for /f [usebackq <parsingkeywords>] {%%|%}<variable> in (<set>) do <command> [<commandlineoptions>] for /f [usebackq <parsingkeywords>] {%%|%}<variable> in ('<literalstring>') do <command> [<commandlineoptions>] for /f [usebackq <parsingkeywords>] {%%|%}<variable> in (`<command>`) do <command> [<commandlineoptions>]W poniższej tabeli wymieniono słowa kluczowe analizowania, których można używać do analizowania słów kluczowych.
Keyword Description eol= <c>Określa koniec znaku wiersza (tylko jeden znak). skip= <n>Określa liczbę wierszy do pominięcia na początku pliku. delims= <xxx>Określa zestaw ograniczników. Spowoduje to zastąpienie domyślnego zestawu ograniczników spacji i karty. tokens= <x,y,m-n>Określa, które tokeny z każdego wiersza mają być przekazywane do pętli for dla każdej iteracji. W związku z tym przydzielane są dodatkowe nazwy zmiennych. m-n określa zakres, od mth do nth tokenów. Jeśli ostatnim znakiem w ciągu tokens= jest gwiazdka (*), przydzielana jest dodatkowa zmienna, która otrzymuje pozostały tekst w wierszu po ostatnim tokenie, który jest analizowany. usebackq Określa, aby uruchomić ciąg cytowany wstecz jako polecenie, należy użyć ciągu pojedynczego cudzysłowu jako ciągu literału lub, w przypadku długich nazw plików zawierających spacje, zezwalać na nazwy plików w <set>, aby każdy z nich był ujęta w znaki podwójnego cudzysłowu.Podstawianie zmiennych: W poniższej tabeli wymieniono opcjonalną składnię (dla dowolnej zmiennej I):
Zmienna z modyfikatorem Description %~I%IRozwija, co powoduje usunięcie wszelkich otaczających cudzysłowów.%~fI%IRozwija się do w pełni kwalifikowanej nazwy ścieżki.%~dI%IRozwija się tylko na literę dysku.%~pI%IRozwija się tylko do ścieżki.%~nI%IRozwija się tylko do nazwy pliku.%~xI%IRozwija się tylko do rozszerzenia nazwy pliku.%~sIRozwija ścieżkę, aby zawierała tylko krótkie nazwy. %~aI%IRozwija się do atrybutów pliku pliku.%~tI%IRozwija się do daty i godziny pliku.%~zI%IRozszerza rozmiar pliku.%~$PATH:IWyszukuje katalogi wymienione w zmiennej środowiskowej PATH i rozwija %Isię do w pełni kwalifikowanej nazwy pierwszego znalezionego katalogu. Jeśli nazwa zmiennej środowiskowej nie jest zdefiniowana lub plik nie zostanie znaleziony przez wyszukiwanie, ten modyfikator rozwija się do pustego ciągu.W poniższej tabeli wymieniono kombinacje modyfikatora, których można użyć do uzyskania wyników złożonych.
Zmienna z połączonymi modyfikatorami Description %~dpI%IRozwija się tylko do litery dysku i ścieżki.%~nxI%IRozwija się tylko do nazwy pliku i rozszerzenia.%~fsI%IRozwija się do pełnej nazwy ścieżki tylko z krótkimi nazwami.%~dp$PATH:IWyszukuje katalogi wymienione w zmiennej środowiskowej PATH dla %Ii rozwija się do litery dysku i ścieżki pierwszego znalezionego.%~ftzaIInterpretowane %Ijako wiersz wyjściowy, który jest podobny do dir.W powyższych przykładach możesz zastąpić
%Iwartości i path innymi prawidłowymi wartościami. Poprawna dla nazwa zmiennej kończy %~ składnię.Używając wielkich nazw zmiennych, takich jak
%I, można zwiększyć czytelność kodu i uniknąć pomyłek z modyfikatorami, które nie są uwzględniane wielkości liter.
Analizowanie ciągu: Logikę
for /fanalizowania można użyć w ciągu bezpośrednim, opakowując<literalstring>cudzysłów w cudzysłowach (bez usebackq) lub w pojedynczych cudzysłowach (z usebackq) — na przykład (MyString) lub ('MyString').<literalstring>jest traktowany jako pojedynczy wiersz danych wejściowych z pliku. Podczas analizowania w cudzysłowach<literalstring>symbole poleceń, takie jak (\ & | > < ^) są traktowane jako zwykłe znaki.Dane wyjściowe analizy: Za pomocą
for /fpolecenia można przeanalizować dane wyjściowe polecenia, umieszczając cudzysłów<command>wsteczny między nawiasami. Jest on traktowany jako wiersz polecenia, który jest przekazywany do podrzędnego Cmd.exe. Dane wyjściowe są przechwytywane w pamięci i analizowane tak, jakby był to plik.
Examples
Aby użyć for w pliku wsadowym, użyj następującej składni:
for {%%|%}<variable> in (<set>) do <command> [<commandlineoptions>]
Aby wyświetlić zawartość wszystkich plików w bieżącym katalogu, które mają rozszerzenie .doc lub .txt przy użyciu zmiennej zastępowalnej %f, należy wpisać:
for %f in (*.doc *.txt) do type %f
W poprzednim przykładzie każdy plik, który ma rozszerzenie .doc lub .txt w bieżącym katalogu, jest podstawiany przez zmienną %f , dopóki nie zostanie wyświetlona zawartość każdego pliku. Aby użyć tego polecenia w pliku wsadowym, zastąp każde wystąpienie %f ciągiem %%f. W przeciwnym razie zmienna jest ignorowana i wyświetlany jest komunikat o błędzie.
Aby przeanalizować plik, ignorując skomentowane wiersze, wpisz:
for /f "eol=; tokens=2,3* delims=," %i in (myfile.txt) do @echo %i %j %k
To polecenie analizuje każdy wiersz w myfile.txt. Ignoruje wiersze rozpoczynające się od średnika i przekazuje drugi i trzeci token z każdego wiersza do for treści (tokeny są rozdzielane przecinkami lub spacjami). Treść odwołania do instrukcji for%i w celu uzyskania drugiego tokenu, %j w celu uzyskania trzeciego tokenu i %k w celu uzyskania wszystkich pozostałych tokenów. Jeśli nazwy plików, które podajesz, zawierają spacje, użyj cudzysłowów wokół tekstu (na przykład Nazwa pliku). Aby użyć cudzysłowów, musisz użyć usebackq. W przeciwnym razie znaki cudzysłowu są interpretowane jako definiujące ciąg literału do analizy.
%i jest jawnie zadeklarowany w instrukcji for . %j i %k są niejawnie deklarowane przy użyciu tokens=. Możesz użyć tokens= , aby określić do 26 tokenów, jeśli nie spowoduje to próby zadeklarowania zmiennej wyższej niż litera z lub Z.
Aby przeanalizować dane wyjściowe polecenia, umieszczając set między nawiasami, należy wpisać:
for /f "usebackq delims==" %i in (`set`) do @echo %i
Aby wyświetlić nazwę każdego podkatalogu (nie plików) w katalogu, wpisz:
for /d %D in ("C:\Users\*") do @echo %~nxD
Polecenie to wykorzystuje opcję /d do iteracji katalogów odpowiadających C:\Users\*, a modyfikator %~nxD wyświetla nazwę każdego katalogu bez pełnej ścieżki. Aby użyć tego polecenia w pliku wsadowym, zastąp %D go przez .%%D
Aby przejść przez zakres liczb, wpisz:
for /l %N in (1,2,9) do @echo %N
To polecenie wykorzystuje opcję /l z wartościami start, step i end w , (1,2,9) aby wygenerować sekwencję 1 3 5 7 9 i powtarza każdą liczbę. Aby użyć tego polecenia w pliku wsadowym, zastąp każde %N z nich na %%N.
Aby wykonać cykliczną pętlę wszystkich plików w katalogu, w tym podkatalogów i echo ich pełnej ścieżki, kiedy zostały ostatnio zmodyfikowane, a ich rozmiar pliku, wpisz:
for /r "C:\My Dir\" %A in (*.*) do echo %~ftzA