Utilizzando la dichiarazione FOR

L'istruzione FOR è un comando che permette di "loop" o ripetere i comandi più volte. È molto simile all'istruzione FOR disponibile in diversi linguaggi di programmazione. L'istruzione FOR viene spesso utilizzato in file batch, ma può anche essere utilizzato direttamente sulla linea di comando.

Come promemoria, la forma generale del ciclo FOR è:

FOR% variabile IN (set) di comando DO [parametri-comando]

Dove 'variabile' è una singola lettera, '(set)' specifica un insieme di uno o più file, 'comando' è il comando del prompt dei comandi da eseguire per ogni file nel set, e 'parametri Comando' sono opzionali parametri da passare a 'comando'.

Quindi diciamo che vi è stato dato più file dll COM che è necessario registrarsi entro Registro di Windows '. Si li potrebbe mettere in una cartella e quindi possibile eseguire il seguente comando da dentro quella cartella:

C: \ DLL> FOR% i IN (* .dll) DO regsvr32 / s% i

Quello che fa, per ogni file DLL si trova nella directory corrente, è quello di eseguire il programma regsvr32 su di esso. (Il "/ s" interruttore dice semplicemente regsvr32 a fare il suo lavoro in silenzio.) La variabile utilizzata ("% i") è case sensitive, e assume il valore di ogni file dll a turno. Il nome del file dll viene poi passato al programma regsvr32 usando lo stesso "% i" variabile.

Una variante del generale PER ciclo utilizza l'interruttore / L e ha questa forma generale:

PER / L% variabile IN (inizio, punto, fine) DO comando [parametri-comando]

Questo esegue un ciclo in cui variabile% viene prima impostata su 'Start' e viene incrementato di 'step' fino a raggiungere il valore di 'fine'. (Questo uso dovrebbe essere molto familiare ai programmatori.) Allora diciamo è necessario visualizzare l'elenco dei numeri da 1 a 5. Si potrebbe fare in questo modo:

C: \> FOR / L% i IN (1,1,5) DOecho% i

Un'altra variante del ciclo FOR utilizza l'opzione / D e ha questa forma generale:

PER / D% variabile IN (set) di comando DO [parametri-comando]

Con questa variante, se 'set' contiene caratteri jolly, poi le opere di comando sui nomi delle directory invece di nomi di file. Questo sarebbe utile, per esempio, se si voleva copiare una serie di file da un albero di directory e mettere tutti i file in una directory.

Ad esempio, ho una directory denominata \ Temp. Contiene sottodirectory chiamate \ Temp \ Temp2 e \ Temp \ Barry. Il \ Temp \ Barry e le \ Temp directory \ Temp2 contengono file che voglio copiare. Se volessi copiare tutti i file (senza la struttura di directory) nella struttura \ Temp in una directory denominata \ Files, potrei fare in questo modo:

C: \ Temp> FOR / D% i IN (*) copy% i \ * * \ Files.

Ho lasciato alla fine quello che penso è la forma più esoterica del loop FOR. Sembra che con l'opzione / F permette di fare quasi tutto, se si riesce a capire solo come usarlo. La forma generale è:

PER / F "opzioni"% variabile IN (`comando`) comando DO [parametri-comando]

(Ci dispiace ma non tutto contenuto in una sola riga.) Ci sono diverse opzioni "è possibile utilizzare, e il primo 'comando' (quella circondato dalle indietro apostrofi) può essere qualsiasi comando del prompt dei comandi. Quindi, ecco un esempio di come utilizzare questa:

PER / F "usebackq delims =="% i IN (`dir / bc: \ temp \ a * .tmp`) DOecho c: \ temp \% i | Findstr / f: /" abc "

(Ci dispiace ma non tutto rientra in una riga.) Questo comando esegue un comando DIR / B su C: \ Temp \ A * .tmp. Per ogni file che trova, fa eco il nome del file e la trasporta al comando Findstr, che cerca tutte le righe che contengono una "a", "b", o "c". Una cosa piuttosto strana da fare, concesso, ma almeno mostra come è possibile utilizzare / F. Vi suggerisco di fare FOR /? Per ottenere un elenco completo di ciò che tutte le opzioni sono, e allora sei praticamente legato solo dalla vostra immaginazione capire come usarlo.

È inoltre possibile utilizzare il comando FOR all'interno di un file batch. L'unica cosa che è diverso è che si raddoppia i -signs%, mentre nella riga di comando si utilizza un solo% -sign. Ad esempio, se il secondo esempio precedente dovesse essere collocato in un file batch, sarebbe simile a questa:

PER / L %% i IN (1,1,5) DOecho %% i

Questo suggerimento (13196) si applica a Windows 7 e 8.