for

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 % variable lub %% variable z 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, %0 za 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 %%f bę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 % variable wartość 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 %I Rozwija, co powoduje usunięcie wszelkich otaczających cudzysłowów.
      %~fI %I Rozwija się do w pełni kwalifikowanej nazwy ścieżki.
      %~dI %I Rozwija się tylko na literę dysku.
      %~pI %I Rozwija się tylko do ścieżki.
      %~nI %I Rozwija się tylko do nazwy pliku.
      %~xI %I Rozwija się tylko do rozszerzenia nazwy pliku.
      %~sI Rozwija ścieżkę, aby zawierała tylko krótkie nazwy.
      %~aI %I Rozwija się do atrybutów pliku pliku.
      %~tI %I Rozwija się do daty i godziny pliku.
      %~zI %I Rozszerza rozmiar pliku.
      %~$PATH:I Wyszukuje katalogi wymienione w zmiennej środowiskowej PATH i rozwija %I się 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 %I Rozwija się tylko do litery dysku i ścieżki.
      %~nxI %I Rozwija się tylko do nazwy pliku i rozszerzenia.
      %~fsI %I Rozwija się do pełnej nazwy ścieżki tylko z krótkimi nazwami.
      %~dp$PATH:I Wyszukuje katalogi wymienione w zmiennej środowiskowej PATH dla %I i rozwija się do litery dysku i ścieżki pierwszego znalezionego.
      %~ftzaI Interpretowane %I jako wiersz wyjściowy, który jest podobny do dir.

      W powyższych przykładach możesz zastąpić %I wartoś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 /f analizowania 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 /f polecenia 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