(Більш детально роз’яснення можна знайти в заархівованій статті Microsoft KB .)
Три речі, які слід знати:
- Знак відсотка використовується в пакетних файлах для представлення параметрів командного рядка:
%1
, %2
, ...
Двовідсоткові знаки з будь-якими символами між ними інтерпретуються як змінна:
echo %myvar%
- Два відсоткові знаки, у яких немає нічого між ними (у пакетному файлі), розглядаються як єдиний відсотковий знак у команді (а не в командному файлі):
%%f
Чому це?
Наприклад, якщо ми виконаємо ваш (спрощений) командний рядок
FOR /f %f in ('dir /b .') DO somecommand %f
у пакетному файлі правило 2 намагається інтерпретувати
%f in ('dir /b .') DO somecommand %
як змінну. Щоб запобігти цьому, вам слід застосувати правило 3 і втекти %
з другого %
:
FOR /f %%f in ('dir /b .') DO somecommand %%f