Требуется отложенное расширение:
@setlocal enableextensions enabledelayedexpansion
@echo off
FOR /f "tokens=* delims=" %%G IN ('dir') DO (
set var=%%G
echo !var!
)
endlocal
Причина, по которой он не работает, заключается в том, что %var%
вычисляется во время анализа всей команды.Команда является целыми четырьмя строками оператора for
.Используя отложенное расширение, вы откладываете оценку !var!
до момента, когда выполняется фактическое echo
, когда оно установлено правильно.