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 un 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 il gruppo contiene caratteri jolly, vengono utilizzati nomi di cartelle anziché di file.
  • /R [[unità:]perc] - Esegue FOR in ogni cartella della struttura di cartelle della cartella specificata. Se non viene specificata alcuna cartella, viene usata la cartella corrente. Se il gruppo contiene solo un punto (.), saranno elencate tutte le cartelle nella struttura della cartella.
  • /L - Tra parentesi tonde viene specificata, anziché un gruppo di file, una sequenza di numeri. Esempi: (1,1,4) genera 1 2 3 4, mentre (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 di file.
    • Con 'comando' viene specificato il comando al posto di gruppofile.
    NB: È indispensabile mettere uno di questi parametri insieme a /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 - Specifica il numero di righe dall'inizio del file che devono essere ignorate.
    • DELIMS=xxx - Specifica un insieme di delimitatori separati da una virgola. Questo insieme sostituisce i delimitatori predefiniti (spazi e tabulazioni). Questa opzione deve essere messa per ultima.
    • TOKENS=x,y,m-n - Specifica quali token devono essere copiati e in quale variabile. x specifica un token che verrà copiato dalla variabile. 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 - Specifica che le nuove modalità sono attive, per la quale 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 mettete le virgolette nel nome del file nel caso in cui siano presenti spazi, altrimenti il sistema potrebbe pensare che abbiate intenzione di specificare 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 file).
  • %~sA - Il percorso espanso contiene solo nomi abbreviati.
  • %~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

che espande %A solo a perc e a nomefile.

 

Esempi:

 

1. 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

 

2. 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

 

3. 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.