(Una spiegazione più dettagliata può essere trovata in un articolo della Microsoft KB archiviato .)
Tre cose da sapere:
- Il segno di percentuale viene utilizzato nei file batch per rappresentare i parametri della riga di comando:
%1
, %2
, ...
Due segni di percentuale con qualsiasi carattere tra di loro vengono interpretati come una variabile:
echo %myvar%
- Due segni di percentuale senza alcun elemento intermedio (in un file batch) vengono trattati come un singolo segno di percentuale in un comando (non un file batch):
%%f
Perché è così?
Ad esempio, se eseguiamo la tua riga di comando (semplificata)
FOR /f %f in ('dir /b .') DO somecommand %f
in un file batch, la regola 2 tenta di interpretare
%f in ('dir /b .') DO somecommand %
come variabile. Per evitare ciò, devi applicare la regola 3 e sfuggire alla %
con un secondo %
:
FOR /f %%f in ('dir /b .') DO somecommand %%f