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.