2009-08-31 16 views

Odpowiedz

71
FOR %%A IN (list) DO command parameters 

lista jest listą wszystkich elementów oddzielonych albo przestrzeniach, przecinek tych i średników.

komenda mogą być dowolne polecenie wewnętrzne lub zewnętrzne, plik wsadowy lub nawet - w OS/2 i NT - lista komend

parametrów zawiera parametry wiersza polecenia dla polecenia. W tym przykładzie polecenie zostanie wykonane jeden raz dla każdego elementu na liście, używając parametrów, jeśli zostały określone.

Specyficznym typem parametru (lub nawet polecenia) jest %% A, który będzie zastępowany przez każdy element z listy kolejno.

Od FOR loops

+1

Czy mogę podać zakres (od 1 do 100) na liście? – Pradeep

+18

'FOR/L% x IN (1,1,100) DO ...' – Joey

+0

wstawić parens wokół '[parameters]' jeśli chcesz uwzględnić wiele linii w pętli 'for' –

39

Typ:

for /? 

a dostaniesz kilka stron tekstem pomocy.

+4

Wolę to od zaakceptowanej odpowiedzi, ponieważ obsługuje różne wersje DOS/Windows. "Przez lata" znacznie się poprawiło, a pytanie nie mówi, która wersja (-y) jest (są) kierowana, ani jaki scenariusz jest podejmowany. –

141

Jeśli chcesz coś zrobić x razy, można to zrobić:

Przykład (x = 200):

FOR /L %%A IN (1,1,200) DO (
    ECHO %%A 
) 

1,1,200 oznacza:

  • Początek = 1
  • I ncrement na krok = 1
  • End = 200
+14

Dzięki za dodanie. Może być bardziej jasne, jeśli zmienisz wartość początkową w twoim przykładzie na coś innego niż przyrost. –

+4

Wartość końcowa jest włączona. –

11

FOR daje żadnych informacji kiedykolwiek będziesz wiedzieć o pętli for, w tym przykładów dotyczących prawidłowego użytkowania.

9

Spróbuj ten kod:

@echo off 
color 02 
set num1=0 
set num2=1 
set terminator=5 
:loop 
set /a num1= %num1% + %num2% 
if %num1%==%terminator% goto close 
goto open 
:close 
echo %num1% 
pause 
exit 
:open 
echo %num1% 
goto loop 

num1 jest liczbą być zwiększany i num2 jest wartość dodana do num1 i terminatora jest wartością gdzie num1 skończy. W tym komunikacie można podać inną wartość terminatora (if %num1%==%terminator% goto close). To jest wyrażenie boolowskie goto close to proces, jeśli boolean ma wartość true, a goto open jest procesem, jeśli boolean ma wartość false.

+0

Nie możesz użyć polecenia 'FOR'? –

3
@echo off 
echo. 
set /p num1=Enter Prelim: 
echo. 
set /p num2=Enter Midterm: 
echo. 
set /p num3=Enter Semi: 
echo. 
set /p num4=Enter Finals: 
echo. 
set /a ans=%num1%+%num2%+%num3%+%num4% 
set /a avg=%ans%/4 
ECHO %avg% 
if %avg%>=`95` goto true 
:true 
echo The two numbers you entered were the same. 
echo. 
pause 
exit 
15

Wykonaj warunkowo kilka razy polecenie.

  • składnia-FOR-Files

    FOR %%parameter IN (set) DO command 
    
  • składnia-FOR-Files zakorzenione w Drodze

    FOR /R [[drive:]path] %%parameter IN (set) DO command 
    
  • składnia-FOR-foldery

    FOR /D %%parameter IN (folder_set) DO command 
    
  • Składnia-FOR -Wykaz numerów

    FOR /L %%parameter IN (start,step,end) DO command 
    
  • zawartość składni-FOR-file

    FOR /F ["options"] %%parameter IN (filenameset) DO command 
    

    lub

    FOR /F ["options"] %%parameter IN ("Text string to process") DO command 
    
  • składnia-FOR-Command Wyniki

    FOR /F ["options"] %%parameter IN ('command to process') DO command 
    

To

  • Weźmy zbiór danych
  • Zrób parametru %%G równa jakiejś części tych danych
  • wykonać polecenie (opcjonalnie za pomocą parametru jako część polecenia).
  • -> Powtórz dla każdej pozycji danych

Jeśli używasz polecenia FOR w wierszu polecenia, a nie w programie wsadowym, należy użyć tylko jeden procent znak: %G zamiast %%G.

dla parametrów

  • Pierwszym parametrem musi być zdefiniowana za pomocą pojedynczego znaku, na przykład litery G.

  • FOR %%G IN ...

    w każdej iteracji FOR pętli, klauzula IN (....) jest oceniana, a %%G ustawiona na inną wartość:

    Jeśli ta klauzula daje pojedynczą wartość, wówczas %% G jest ustawione na tę wartość i polecenie zostanie wykonane.

    Jeśli klauzula powoduje wiele wartości, wówczas dodatkowe parametry są niejawnie zdefiniowane w celu ich zachowania. Są one automatycznie przydzielane w kolejności alfabetycznej: %%H %%I %%J ... (domyślna definicja parametru)

    Jeśli parametr odnosi się do pliku, można użyć rozszerzonej referencji zmiennej w celu wyodrębnienia nazwy pliku/ścieżki/daty/rozmiaru.

    Można oczywiście wybrać dowolną literę alfabetu inną niż %%G.ale jest to dobry wybór, ponieważ nie jest w konflikcie z żadną z liter formatu ścieżki (a, d, f, n, p, s, t, x) i zapewnia najdłuższy ciąg niekolidujących liter do użycia jako niejawne parametry .

1

Z FOR /? pomocy DOC

dla% zmienna IN (Set) każ [polecenie-parametry]

zmiennej% określa się pojedynczy parametr wymienny.
(zestaw) Określa zestaw jednego lub więcej plików. Można użyć symboli wieloznacznych. polecenie Określa polecenie do wykonania dla każdego pliku.
parametry polecenia
Określa parametry lub przełączniki dla określonego polecenia.

Aby użyć polecenia FOR w programie wsadowym, należy podać zmienną %% zamiast wartości
zmiennej%. W nazwach zmiennych są rozróżniane małe i wielkie litery, więc% i różni się od:
od% I.

przypadku rozszerzenia poleceń są włączone następujące dodatkowe
formy FOR polecenia są obsługiwane:

O/D% zmienna IN (Set) każ [polecenie-parametry]

If set contains wildcards, then specifies to match against directory 
names instead of file names.           

FOR/R [[napęd:] ścieżka]% zmienna IN (zestaw) DO polecenie [parametry polecenia]

Walks the directory tree rooted at [drive:]path, executing the FOR  
statement in each directory of the tree. If no directory    
specification is specified after /R then the current directory is  
assumed. If set is just a single period (.) character then it   
will just enumerate the directory tree.        

FOR/L% zmienna IN (start , krok, koniec) DO polecenie [parametry polecenia]

The set is a sequence of numbers from start to end, by step amount. 
So (1,1,5) would generate the sequence 1 2 3 4 5 and (5,-1,1) would 
generate the sequence (5 4 3 2 1)          
Powiązane problemy