возможно тема безнадежно устарела, но я все равно напишу свое предложение по этой проблеме.
Идея состоит в том чтобы в вашем примере заменить тело цыкла
do (...) на вызов процедуры.
в этом варианте все красиво работает. переменная не выводит постоянно последнее значение наружного цыкла:
мой пример несколько отличается, но смысл тот же:
здесь поднимается файл, в котором перечислены полные пути типа d:\folder1\folder2\folder3.....
пример перебирает строки из этого файла и передает их параметром на обработку в некую процедуру (в этом случае вынимаются слэши из строки).
Код:
Код: Выделить всё
@echo off
set wd=.\
set bd=.\backups
for /F %%a in (backuper.cnf) do CALL :getFolder %%a
goto :EOF
:getFolder
echo BackupTaskabout: %1
FOR /F "eol=; tokens=2,3,4,5,6,7,8,9,10,11,12,13,14,15,16 delims=\" %%i in ("%1") do set s=%%i %%j %%k %%l %%m%%n%%o%%p%%q%%r%%s%%t%%u%%v%%w
echo folder %s%
goto :EOF