Нужно объединить имена файлов в переменную - PullRequest
0 голосов
/ 27 июня 2019

Я хочу объединить вывод команды forfiles в переменную. Найдите файлы старше 5 дней, затем передайте имена файлов в командную строку 7z, чтобы сжать эти файлы. Вот что я попробовал:

set filenames=
forfiles /D -5 /C "cmd /c set filenames= %filenames% @file"
echo %filenames%   

Этот код не работал, поскольку команда echo ничего не выводила. Нужно некоторое руководство для достижения результата.

1 Ответ

2 голосов
/ 27 июня 2019

Команда 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 команда необходима здесь, чтобы иметь возможность писать и читать переменную в том же (заключенном в скобки) блоке кода.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...