[Batch] pętla for nie interpretuje zmiennych

Witam.

Mam nastepujący problem.

Chcę zrobić prosty programik ktory między innymi będzie kopiował zawartość określonych katalogów zawartych w pliku. Zawierają się w nim zmienne. Kopiowanie chcę zrobić z wykorzystaniem for ale coś mi nie wychodzi.

 

Zawartość listy folderów (log.txt) to

"%USERPROFILE%\Documents"
"%USERPROFILE%\Music"
"%USERPROFILE%\Pictures"
"%USERPROFILE%\Videos"

Wygląd pętli

for /f %%f in (log.txt) do xcopy "%%f" "%1\folder docelowy\" /E /H /K /Y /C

Wynik to

C:\pqi\Tools>xcopy "%USERPROFILE%\Documents" "d:\folder docelowy\" /E /H /K /Y /C
Nie można odnaleźć pliku - Documents

itd

Skrypt jest uruchamiany z innego przez “call”.

Spróbuje:

echo off
for /f %%f in (log.txt) do call xcopy %%f%% "%1\foder docelowy\" /E /H /K /Y /C

Niestety nie działa. Do wynikowego logu zostaje tylko doklejony “%” w stylu

C:\pqi\Tools>xcopy "%USERPROFILE%\Documents"% "d:\folder docelowy\" /E /H /K /Y /C
Nie można odnaleźć pliku - Documents%

Edit

Rozwiązane.

Dodałem rozszerzenia

setlocal enableextensions enabledelayedexpansion

A “%” w zmiennych z log.txt trzeba zamienić na “!”. To można zrobić z automatu np. sed-em.