如何在 Windows 批处理文件中连接字符串?

我有一个目录,我想列出所有的 .doc文件与 ;

我知道下面的批处理命令回应了所有的文件:

for /r %%i In (*.doc) DO echo %%i

但是现在我想把它们都放在一个变量中,在它们之间添加一个 ;,然后一次回显它们。
我该怎么做?

set myvar="the list: "
for /r %%i In (*.doc) DO <what?>
echo %myvar%
211073 次浏览

那么:

@echo off
set myvar="the list: "
for /r %%i in (*.doc) DO call :concat %%i
echo %myvar%
goto :eof


:concat
set myvar=%myvar% %1;
goto :eof

根据 Rubens 的解决方案,需要启用 env 变量的延迟扩展(输入“ help setlocal”或“ help cmd”) ,以便在循环中正确计算 var:

@echo off
setlocal enabledelayedexpansion
set myvar=the list:
for /r %%i In (*.sql) DO set myvar=!myvar! %%i,
echo %myvar%

还要考虑以下限制(MSDN) :

最大限度的个人环境 可变大小为8192字节。

请注意,变量 @fname@ext可以简单地连接起来:

forfiles /S /M *.pdf /C "CMD /C REN @path @fname_old.@ext"

将所有 PDF 文件重命名为“ filename _ old.PDF”