Команда forfiles
выполняет команду, стоящую за /C
в новом экземпляре cmd
, поэтому любые изменения среды, например переменные, недоступны в экземпляре хоста cmd
, который на самом деле запускает forfiles
.
В качестве альтернативы вы можете использовать for /F
loop , чтобы захватить вывод, отраженный в forfiles
, и использовать его для построения вашей переменной:
set "filenames="
for /F "delims=" %%F in ('
forfiles /D -5 /C "cmd /C echo/@file"
') do (
call set "filenames=%%filenames%% %%F"
)
call
команда необходима здесь, чтобы иметь возможность писать и читать переменную в том же (заключенном в скобки) блоке кода.