Для/f обработки имени файла с пробелами

Я хочу сделать некоторую обработку в каждой строке файла.

for /f "delims=" %%i in ("%RF_PROPERTIES%") do (          
   echo %%i
)

Мои RF_PROPERTIES указывают путь к файлу с пробелами (c:\program files\Arcot systems\conf\rf.properties). Жалоба говорит, что переменная среды C:\Program Files\Arcot не определена, хотя я предоставил кавычки. Как заставить его работать?

Ответ 1

Попробуйте добавить параметр usebackq:

for /f "usebackq delims=" %%i in ("%RF_PROPERTIES%") do (          
  echo %%i
)

Объяснение из вывода for /?:

usebackq - указывает, что новая семантика в силе,                   где обратная кавычка выполняется как                   и одна строка с кавычками - это                   literal string и позволяет использовать                   двойные кавычки для цитирования имен файлов в                   файл набора.

Ответ 2

Использование usebackq - хорошая идея - но вы действительно должны их использовать:

for /f "usebackq delims=" %%i in ( `dir "%RF_PROPERTIES%" /s /b` ) do (
  echo %%i
)