需要将文件名连接到一个变量

Need to concatenate file names to a variable

我想将 forfiles 命令的输出连接到一个变量。查找超过 5 天的文件,然后将文件名传递给 7z 命令行以压缩这些文件。这是我试过的:

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

此代码无效,因为 echo 命令没有输出任何内容。需要一些指导才能达到结果。

forfiles command 在新的 cmd 实例中执行 /C 后面的命令,因此任何环境变化如变量在托管 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 command 才能在同一(带括号的)代码块中写入 读取变量。