Il comando: "FOR" è attivo Windows 12, 11, 10, .. , MS Server 2025, 2022, 2019, .. disponibile
Gli esempi per il comando "FOR"
IL
`FOR`Il comando nel prompt dei comandi di Windows viene utilizzato per eseguire il loop nei file batch. Ecco alcuni esempi:
Esempio 1: scorrere i file in una directory:
FOR %G IN (directory\*) DO ECHO %G
Descrizione: Questo comando stampa il nome di ciascun file nella directory specificata.
Esempio 2: scorrimento di file con un'estensione di file specifica:
FOR %G IN (directory\*.txt) DO ECHO %G
Descrizione: Stampa il nome di ciascun file di testo nella directory specificata.
Esempio 3: scorrimento ricorsivo dei file nelle sottodirectory:
FOR /R directory %G IN (*.txt) DO ECHO %G
Descrizione: Attraversa ricorsivamente tutte le sottodirectory della directory specificata e stampa il nome di ciascun file di testo.
Esempio 4: scorrere i numeri in un intervallo specifico:
FOR /L %G IN (1,1,10) DO ECHO %G
Descrizione: Emette i numeri da 1 a 10.
Esempio 5: scorrere i caratteri in una stringa:
FOR %G IN ("Ciao") DO ECHO %G
Descrizione: Stampa ogni lettera della parola
"Ciao".
Esempio 6: scorrere il contenuto del file riga per riga:
FOR /F "tokens=*" %G IN (file.txt) DO ECHO %G
Descrizione: Scorre le righe del file
"File.txt" e restituisce ogni riga.
Esempio 7: Iterazione attraverso le variabili di ambiente:
FOR %G IN (%PATH%) DO ECHO %G
Descrizione: Scorre i percorsi nella variabile di ambiente
`PATH`e restituisce ciascun percorso.
Esempio 8: Utilizzo di`SET`in un loop:
FOR %G IN (1 2 3) DO SET /A Numero=%G * 2 & ECHO Doppio di %G È %Numero%
Descrizione: Imposta una variabile
`Numero`al doppio del numero corrente nel ciclo e lo stampa.
Esempio 9: Iterazione attraverso sottodirectory e file:
FOR /R %G IN (*) DO ECHO %G
Descrizione: Attraversa ricorsivamente tutte le sottodirectory e i file nella directory corrente.
Esempio 10: cicli nidificati:
FOR %G IN (1 2) DO FOR %H IN (A B) DO ECHO %G%H
Descrizione: Nidifica due cicli e stampa tutte le combinazioni di %G e %H.
Tieni presente che nei file batch
`%`Attraverso
`%%`dovrebbe essere sostituito. Per esempio:
`FOR %G IN (...) DO ECHO %%G`. Nel prompt diretto viene utilizzato solo il segno percentuale (
`%`).
"FOR" Estratto dalla guida di Microsoft Windows
Microsoft Windows [Version 10.0.19045.3693]
(c) Copyright 1985-2023 Microsoft Corp.
C:\\WINDOWS>
Esegue il comando specificato per ogni file di un gruppo di file.
FOR %variabile IN (gruppo) DO comando [parametri del comando]
%variabile Indica un parametro sostituibile composto da una sola
lettera.
(gruppo) Indica gruppo di uno o più file. Si possono usare
caratteri jolly.
comando Specifica il comando da eseguire per ciascun file.
parametri del comando
Indica i parametri o le opzioni del comando specificato.
Per usare FOR in un programma batch, utilizzare la sintassi %%variabile
anziché %variabile. Le variabili possono essere differenziate
utilizzando
lettere maiuscole e minuscole. Esempio: %i è diversa
da %I.
Se le estensioni ai comandi sono attivate è possibile utilizzare le
seguenti
opzioni per il comando FOR:
FOR /D %variabile IN (gruppo) DO comando [parametri-comando]
Se gruppo contiene dei caratteri jolly, vengono utilizzati
nomi di directory invece di nomi di file.
FOR /R [[unità:]percorso] %variabile IN (gruppo) DO comando [parametri-
comando]
Nella struttura della directory, a partire da [unità:]percorso,
esegue
l'istruzione FOR in ogni directory della struttura. Se dopo /R non
viene
specificato alcun percorso la directory corrente è assunta come
iniziale.
Se per il parametro gruppo si usa solo un carattere punto
(.)saranno
elencate le directory nella struttura della directory specificata.
FOR /L %variabile IN (inizio,incremento,fine) DO comando [parametri-
comando]
Il gruppo è la sequenza dei numeri da inizio a fine con differenza,
tra un
numero e il successivo, pari a incremento.
Per esempio: (1,1,5) genererà 1 2 3 4 5 e (5,-1,1) genererà la
sequenza
(5 4 3 2 1)
FOR /F ["opzioni"] %variabile IN (gruppofile) DO comando [parametri-
comando]
FOR /F ["opzioni"] %variabile IN ("stringa") DO comando [parametri-
comando]
FOR /F ["opzioni"] %variabile IN ("comando") DO comando [parametri-
comando]
o, se l'opzione usebackq è presente:
FOR /F ["opzioni"] %variabile IN (gruppofile) DO comando [parametri-
comando]
FOR /F ["opzioni"] %variabile IN ("stringa") DO comando [parametri-
comando]
FOR /F ["opzioni"] %variabile IN ("comando") DO comando [parametri-
comando]
gruppofile contiene uno o più nomi di file. Ciascun file sarà
aperto,
letto ed elaborato prima di passare al file successivo in
gruppofile.
L'elaborazione consiste nel leggere il file, suddividerlo nelle
singole
righe di testo e scomporre ciascuna riga negli eventuali token che
vi sono
contenuti. Il comando all'interno del ciclo viene dunque richiamato
utilizzando, come valori delle variabili, le stringhe dei token
trovati. La
modalità predefinita prevede che /F passi il primo token delimitato
da
spazi di ogni riga di ogni file. Le righe vuote sono scartate.
La scomposizione in token può essere modificata specificando il
parametro
facoltativo "opzioni". Il parametro deve essere una stringa tra
virgolette
contenente una o più parole chiave che specifichino diversi
parametri per
la scomposizione in token. Le parole chiave sono:
eol=c - specifica il carattere che precede un
commento alla
fine di una riga (solo uno)
skip=n - specifica il numero di righe all'inizio del
file che
devono essere ignorate.
delims=xxx - specifica un insieme di delimitatori. Questo
insieme
sostituisce i delimitatori predefiniti (spazi
e
tabulazioni).
tokens=x,y,m-n - specifica quali token appartenenti a una riga
devono
essere passati al comando ad ogni iterazione.
L'opzione richiede l'utilizzo di nomi di
variabili
aggiuntivi. L'espressione m-n indica i token
dall'm-esimo all'n-esimo. Se l'ultimo
carattere,
nella stringa tokens=, è un asterisco viene
allocata una variabile aggiuntiva cui sarà
assegnato il testo rimanente dopo
l'assegnazione
dell'ultimo token.
usebackq - specifica che le nuove modalità sono attive,
ove una stringa con apici inversi è eseguita
come
un comando e una stringa con apici singoli è
una stringa di comando che consente
l'utilizzo del
doppio apice per i nomi file in un
gruppofile.
Esempi:
FOR /F "eol=; tokens=2,3* delims=, " %i in (myfile.txt) do @echo %i %j
%k
analizza ogni riga in miofile.txt, ignorando le righe che
cominciano con
punto e virgola, passando il secondo e terzo token da ciascuna riga
al
corpo di for, con i token delimitati da virgole e/o spazi. Da
notare il riferimento %i
delle istruzioni del corpo di for di ottenere il secondo token, %j
di ottenere il
terzo token, e %k di ottenere i token rimanenti dopo il terzo. Per
i nomi file che contengono spazi, è necessario racchiudere i nomi
file entro
virgolette. In questo caso, è anche importante
utilizzare l'opzione usebackq, altrimenti le virgolette saranno
interpretate come la definizione di una stringa letterale da
analizzare.
%i è esplicitamente dichiarato nell'istruzione for e %j e %k
sono dichiarati per via implicita mediante l'opzione tokens=. È
possibile specificare
fino a 26 token mediante la riga tokens=, a condizione che non
causi un
tentativo di dichiarare una variabile più alta della lettera "z" o
"Z".
Ricordare che le variabili FOR sono composte da una sola lettera,
seguono la distinzione maiuscole/minuscole, sono globali
e non è possibile che ve ne siano più di 52 attivi
contemporaneamente.
È inoltre possibile utilizzare la logica di analisi FOR /F
trasformando il gruppo di nomi file tra parentesi in una stringa
utilizzando delle semplici virgolette. La stringa sarà trattata
come riga di input
unica da un file, e quindi analizzata.
Infine, è possibile usare il comando FOR /F per analizzare l'output
di un
comando trasformando il gruppo di nomi file tra
parentesi in una stringa con virgolette inverse. La stringa sarà
trattata come una riga di
comando passata a un figlio CMD.EXE, l'output è acquisito
in memoria e analizzato come fosse un file. Pertanto il seguente
esempio:
FOR /F "usebackq delims==" %i IN (`set`) DO @echo %i
enumera i nomi di variabili nell'ambiente
corrente.
Sono stati anche migliorati i riferimenti alla avariabile FOR.
YÈ ora possibile utilizzare la seguente sintassi:
%~I - espande %I rimuovendo le virgolette (")
%~fI - espande %I rendendolo un nome di percorso completo
%~dI - espande %I solo a lettera di unità
%~pI - espande %I solo a percorso
%~nI - espande %I solo a nome file
%~xI - espande %I solo a estensione file
%~sI - il percorso espanso contiene solo nomi brevi
%~aI - espande %I ad attributi file
%~tI - espande %I a data/ora file
%~zI - espande %I a dimensioni file
%~$PATH:I - ricerca nelle directory elencate nella variabile di
ambiente PATH ed espande %I al
primo nome completo incontrato.
Se la variabile di ambiente non è
definita o il file non è trovato nella
ricerca, questo carattere di modifica espande
alla prima stringa vuota
I caratteri di modifica possono essere combinati insieme:
%~dpI - espande %I solo a lettera di unità e percorso
%~nxI - espande %I solo a nome file e estensione
%~fsI - espande %I solo a nome di percorso completo con nomi
brevi
%~dp$PATH:i - ricerca nelle directory elencate nella variabile di
ambiente PATH per %I ed espande ai primi
lettera di unità e percorso trovati.
%~ftzaI - espande %I a una DIR come riga di output
Negli esempi citati %I e PATH possono essere sostituiti da altri valori
validi. La sintassi %~ viene terminata con un nome di variabile FOR
valido.
Scegliendo nomi di variabile con caratteri maiuscoli come %I il testo
diventa più leggibile ed
evita confusione con i caratteri di modifica, che non seguono la
distinzione maiuscole/minuscole.
Informazioni importanti, suggerimenti per il comando "FOR"
Quando si utilizza il
`FOR`comando nel prompt dei comandi di Windows, ci sono alcuni punti importanti da notare:
1.
Sintassi nei file batch: Se hai il file
`FOR`comando in un file batch, è necessario
`%`Attraverso
`%%`sostituire. Per esempio:
`FOR %%G IN (...) DO ECHO %%G`.
2.
Utilizzo delle variabili: in genere si utilizzano variabili (ad es.
`%%G`) nel
`FOR`-Loop per memorizzare i valori. Si noti che le variabili non possono accedere ai valori assegnati al di fuori del ciclo.
SET Variable=Valore iniziale
FOR %%G IN (Valore1 Valore2) DO SET Variable=%%G
ECHO %Variable%
Eccolo
`%Variable%`mantenere il valore
"valore iniziale" perché il
`SET`-Istruzioni in un separato
`FOR`viene eseguito il ciclo.
3.
Spazi nei percorsi o nei nomi dei file: Se i percorsi o i nomi dei file contengono spazi, il percorso o il nome del file devono essere racchiusi tra virgolette per garantire che vengano interpretati correttamente.
FOR %%G IN ("Directory con spazi\File con spazi.txt") DO ECHO %%G
4.
Opzioni per`FOR /F`-Loop: Se tu
`FOR`in connessione con
`/F`opzione (ad es.
`FOR /F "tokens=*" %%G IN (file.txt) DO ECHO %%G`), è necessario conoscere la sintassi del file
`tokens`E
`delims`Regola attentamente le opzioni per ottenere i risultati desiderati.
5.
Cicli nidificati: Con i cicli nidificati è necessario garantire il corretto utilizzo di
`%`O
`%%`prestare attenzione per garantire che le variabili siano referenziate nel ciclo corretto.
FOR %%G IN (1 2) DO (
ECHO Anello esterno: %%G
FOR %%H IN (A B) DO ECHO Anello interno: %%H
)
6.
Fine delle righe del file all'interno`FOR /F`: Se tu
`FOR /F`per scorrere le righe di un file, per impostazione predefinita ogni riga fino al primo spazio o tabulazione è considerata un token. Puoi farlo con l'opzione
`delims`regolare.
FOR /F "tokens=* delims=" %%G IN (file.txt) DO ECHO %%G
7.
Opzioni variabili di data e ora: Se disponi di
`%DATE%`- O
`%TIME%`-Variabili in uno
`FOR`-Loop, dovresti prestare attenzione alle impostazioni regionali del sistema, poiché il formato può variare.
8.
Iterazione di file con codifica UTF-8: The
`FOR /F`il comando potrebbe avere difficoltà a scorrere i file con codifica UTF-8. In questi casi potrebbe essere meglio utilizzare altri strumenti come
`FINDSTR`usare.
È importante considerare i requisiti specifici del tuo caso d'uso e del
`FOR`-Regolare il ciclo di conseguenza. Puoi
`FOR /?`nel prompt dei comandi per visualizzare la guida completa e tutte le opzioni disponibili.