如何连接Windowsbatch file中的string?

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

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

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

但是现在我想把它们都放在一个variables中,加一个; 在两者之间,并立即回声。
我怎样才能做到这一点?

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

Solutions Collecting From Web of "如何连接Windowsbatch file中的string?"

关于什么:

 @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”