FOR

Esegue il comando specificato per ogni file di un gruppo di file.

 

FOR [/D | /R [[unità:]perc]] {%variabile | %%variabile} IN (gruppo) DO comando [parametri comando]

 

Esegue il comando specificato per ogni ripetizione.

 

FOR /L {%variabile | %%variabile} IN (inizio,incremento,fine) DO comando [parametri comando]

 

Esegue il comando specificato dopo aver diviso in token un gruppo file, una stringa o un comando.

 

FOR /F ["opzioni"] [%variabile | %%variabile] IN ({gruppofile | "stringa" | 'comando'}) DO comando [parametri comando]

 

Dove:    %variabile               Indica un parametro sostituibile composto da una sola lettera

                                                (se FOR viene eseguito direttamente dal prompt dei

                                                comandi).

              %%variabile           Indica un parametro sostituibile composto da una sola lettera

                                                (se FOR viene eseguito da un file batch).

              (gruppo)                  Indica gruppo di uno o più file (fra parentesi tonde ( )).

                                                Carattere jolly frequente è * (vedi Caratteri Jolly).

              comando                 Specifica il comando da eseguire per ciascun file.

              parametri comando   Indica i parametri o le opzioni del comando specificato.

              /D                            Indica che se gruppo contiene caratteri jolly vengono utilizzati

                                              nomi di cartelle anziché di file.

              /R [[unità:]perc]       Nella struttura di cartelle della cartella specificata esegue

                                                FOR in ogni cartella della struttura. Se non viene specificata

                                                alcuna cartella viene usata la cartella corrente. Se gruppo

                                                contiene solo un punto . saranno elencate tutte le cartelle

                                                nella struttura della cartella.

              /L                             Tra parentesi tonde viene specificato, anziché gruppi di file,

                                               una sequenza di numeri. Esempi: (1,1,4) genera 1 2 3 4. (7,

                                               -2,1) genera 7 5 3 1.

              /F                             Anziché gruppi di file:

                                              Con   gruppofile            Viene specificato un file o più. Ciascun

                                                                                       file viene aperto, letto ed elaborato

                                                                                       suddividendo una riga di testo

                                                                                      da un'altra (le suddivisioni sono i token).

                                              Con   "stringa"               Viene specificata una stringa al posto

                                                                                      del gruppo file.

                                              Con   'comando'           Viene specificato il comando al posto

                                                                                      del gruppofile.

                                              NB: È indispensabile mettere uno di questi parametri insieme

                                              ad /F, non è possibile metterne due contemporaneamente o

                                              più.

              "opzioni"                 Modifica la scomposizione in token. Le parole chiave sono:

                                              EOL=c                          Ignora le righe che iniziano per il

                                                                                    carattere specificato (per fare un

                                                                                     commento).

                                              SKIP=n                         Che specifica il numero di righe

                                                                                     dall’inizio del file che devono essere

                                                                                     ignorate.

                                              DELIMS=xxx               Che specifica un insieme di

                                                                                   deliminatori separati da una virgola.

                                                                                   Questo insieme sostituisce i deliminatori

                                                                                    predefiniti (spazi e tabulazioni). Questa

                                                                                    opzione deve essere messa per ultima.

                                              TOKENS=x,y,m-n        Che specifica quali token devono essere

                                                                                     copiati e in quale variabile. x specifica un

                                                                                     token che verrà copiato della variabile

                                                                                     specificata. y indica un token che verrà

                                                                                     copiato nella variabile con la lettera

                                                                                      successiva a quella specificata. m-n

                                                                                     indica i token dal numero m al numero n

                                                                                     che verranno copiati nella variabile con la

                                                                                     seconda lettera dopo quella specificata.

                                                                                     Oppure viene messo l’asterisco *

                                                                                     per indicare tutti i token. È possibile

                                                                                     specificare un massimo di 26 token.

                                              USEBACKQ                Che specifica che le nuove modalità sono

                                                                                    attive, dove una stringa con apici inversi

                                                                                    è eseguita come comando e una con

                                                                                    apici singoli come stringa di comando

                                                                                    che consente l’utilizzo del doppio apice

                                                                                    per i nomi file in un gruppofile (in poche

                                                                                    parole questa opzione vi serve se

                                                                                    mettette le virgolette nel nome del file nel

                                                                                    caso in cui sono presenti spazi, altrimenti

                                                                                    il sistema potrebbe capire che voi

                                                                                    specifichiate più file o più comandi).

 

Nelle variabili le maiuscole sono di valore differente delle minuscole (%a è diversa da %A). Quindi in totale le variabili di questo tipo possono essere al massimo 52. Le variabili possono essere espanse in altri modi (nel caso in cui vuoi espanderle da un file batch mettere un simbolo di percento % in più). I caratteri tra i simboli %~ e il carattere della variabile si chiamano caratteri di modifica (ad esempio nel caso %~fA il carattere di modifica è f). Suggerimento: è meglio scegliere dei caratteri maiuscoli per i caratteri delle variabili, per non fare confusione fra caratteri di modifica e caratteri di variabile.

%~A                Espande %A rimuovendo le virgolette " ".

%~fA              Espande %A rendendolo un nome di percorso completo.

%~dA             Espande %A solo a lettera di unità (unità del file).

%~pA              Espande %A solo a perc (percorso del file).

%~nA              Espande %A solo a nomefile (nome del file).

%~xA              Espande %A solo ad est (estensione del file).

%~sA              Il percorso espanso contiene solo nomi brevi.

%~aA              Espande %A ad attr (attributi del file).

%~tA              Espande %A a data/ora (data e ora della creazione del file… o ultima

                        modifica?).

%~zA              Espande %A a dimensioni (dimensioni del file).

%~$path:A      Ricerca nelle cartelle elencate nella variabile di ambiente PATH ed

                         espande %A al primo nome completo. Se la variabile di ambiente non è

                         definita (cioè che non esiste al momento) o il file non è trovato nella

                         ricerca, espande questo carattere di modifica alla prima stringa vuota.

I caratteri di modifica possono essere combinati insieme come nel seguente esempio:

%~pnA

In cui espande %A solo a perc e a nomefile.

 

Esempi:

 

File batch che analizza ogni riga del file C:\Oral-C Mortality.txt specificando che %a avrà il valore del quarto token, %b il valore del dodicesimo token e %c il valore dei token rimanenti, ignorando le righe che iniziano per punto esclamativo !, specificando che i token sono delimitati da segni di uguale = e spazi e viene eseguito il comando ECHO %a %b %c:

for /f "eol=! tokens=4,12* usebackq delims== " %%a in ("C:\Oral-C Mortality.txt") do echo %%a %%b %%c

 

File batch che fa un ciclo che si ripete stampando i valori da 0 a 50 con un incremento di 5:

for /l %%h in (0, 5, 50) do echo %%h

 

File batch che fa la lista dei file presenti nella cartella C:\WINDOWS:

for %%i in ("C:\WINDOWS\*.*") do echo %%i


NB: la variabile rimane definita fino alla fine dell’esecuzione del comando FOR.