(A explicação em mais detalhes pode ser encontrada em um artigo arquivado do Microsoft KB .)
Três coisas a saber:
- O sinal de porcentagem é usado em arquivos em lote para representar parâmetros de linha de comando:
%1, %2, ...
Sinais de dois por cento com quaisquer caracteres entre eles são interpretados como uma variável:
echo %myvar%
- Sinais de dois por cento sem nada no meio (em um arquivo de lote) são tratados como um único sinal de porcentagem em um comando (não um arquivo de lote):
%%f
Por que isso?
Por exemplo, se executarmos sua linha de comando (simplificada)
FOR /f %f in ('dir /b .') DO somecommand %f
em um arquivo em lote, a regra 2 tentaria interpretar
%f in ('dir /b .') DO somecommand %
como uma variável. Para evitar isso, você deve aplicar a regra 3 e escapar %com um segundo %:
FOR /f %%f in ('dir /b .') DO somecommand %%f