2009-08-31 59 views

risposta

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

lista è un elenco di elementi, separati da spazi, sia di virgola o virgola.

comando può essere qualsiasi comando, file interno o esterno in batch o anche - in OS/2 e NT - una lista di comandi

parametri contiene i parametri della riga di comando per comando. In questo esempio, il comando verrà eseguito una volta per ogni elemento nell'elenco, utilizzando i parametri se specificato.

Un tipo speciale di parametro (o comando pari) è %% A, che verrà sostituito da ciascun elemento dalla lista consecutivamente.

Da FOR loops

+1

Posso elencare l'intervallo (da 1 a 100)? – Pradeep

+18

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

+0

mette parens attorno a '[parametri]' se desideri includere più righe nel ciclo 'for' –

39

Tipo:

for /? 

e otterrete diverse pagine di testo di aiuto.

+4

Preferisco questo rispetto alla risposta accettata perché gestisce le diverse versioni di DOS/Windows. "For" è stato migliorato in modo significativo, nel corso degli anni, e la domanda non dice quale versione (s) è (sono) mirata né quale scenario si sta tentando. –

141

Se si vuole fare qualcosa x volte, si può fare questo:

Esempio (x = 200):

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

1,1,200 significa:

  • Start = 1
  • I ncrement per passo = 1
  • Fine = 200
+14

Grazie per l'aggiunta. Potrebbe essere più chiaro se si modifica il valore iniziale nell'esempio in qualcosa di diverso dall'incremento. –

+4

Il valore finale è compreso. –

11

FOR vi darà tutte le informazioni di cui avrete bisogno di sapere su cicli FOR, tra cui esempi di uso corretto.

9

provare questo codice:

@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 è il numero da incrementare e num2 è il valore aggiunto di num1 e terminatore è il valore in cui la num1 finirà. È possibile indicare un valore diverso per il terminatore in questa istruzione (if %num1%==%terminator% goto close). Questa è l'espressione booleana goto close è il processo se il booleano è vero e goto open è il processo se il booleano è falso.

+0

Non puoi usare il comando '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

Effettuare condizionatamente un comando più volte.

  • sintassi-PER-Files

    FOR %%parameter IN (set) DO command 
    
  • sintassi-PER-Files radicate nel percorso

    FOR /R [[drive:]path] %%parameter IN (set) DO command 
    
  • sintassi-FOR-cartelle

    FOR /D %%parameter IN (folder_set) DO command 
    
  • sintassi PER -Elenco dei numeri

    FOR /L %%parameter IN (start,step,end) DO command 
    
  • contenuti sintassi-FOR-file

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

    o

    FOR /F ["options"] %%parameter IN ("Text string to process") DO command 
    
  • sintassi-PER-Command Risultati

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

E

  • Prendere una serie di dati
  • Fare una per il parametro %%G uguale ad una parte di tali dati
  • eseguire un comando (eventualmente utilizzando il parametro come parte del comando).
  • -> Ripetere l'operazione per ogni dato

Se si utilizza il comando FOR nella riga di comando, piuttosto che in un programma batch, utilizzare solo l'uno per cento segno: %G invece di %%G.

PER Parametri

  • Il primo parametro deve essere definita utilizzando un singolo carattere, per esempio la lettera G.

  • FOR %%G IN ...

    In ogni iterazione FOR loop, la clausola IN (....) viene valutata e %%G impostata su un valore diverso

    Se questa clausola produce un singolo valore, allora %% G viene impostato uguale a quel valore e il comando viene eseguito.

    Se la clausola produce valori multipli, i parametri aggiuntivi vengono definiti implicitamente per contenere ciascuno di essi. Questi sono assegnati automaticamente in ordine alfabetico %%H %%I %%J ... (definizione implicita del parametro)

    Se il parametro fa riferimento a un file, è possibile utilizzare il riferimento variabile avanzato per estrarre il nome file/percorso/data/dimensione.

    Ovviamente è possibile selezionare qualsiasi lettera dell'alfabeto diversa da %%G.ma è una buona scelta perché non è in conflitto con nessuna delle lettere di formato del percorso (a, d, f, n, p, s, t, x) e fornisce la più lunga serie di lettere non conflittuali da usare come parametri impliciti .

1

Da FOR /? doc Guida:

per la variabile% IN (gruppo) DO comando [parametri-comando]

variabile% Specifica un parametro sostituibile singola lettera.
(set) Specifica un set di uno o più file. Possono essere usati i caratteri jolly. Comando Specifica il comando da eseguire per ciascun file.
parametri di comando
Specifica i parametri o le opzioni per il comando specificato.

Per utilizzare il comando FOR in un programma batch, specificare %% variabile invece
di variabile%. I nomi delle variabili sono case sensitive, quindi% i è diverso
da% I.

Se le estensioni ai comandi sono abilitate, le seguenti ulteriori
forme del comando FOR sono supportati:

FOR/D% variabile IN (gruppo) DO comando [parametri-comando]

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

FOR/R [[unità:] percorso]% variabile IN (gruppo) DO comando [parametri-comando]

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% variabile IN (inizio , passo, fine) DO comando [parametri-comando]

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)          
Problemi correlati