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

时间:2010-01-08 11:00:41

标签: windows batch-file string-concatenation

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

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

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

但是现在我想把它们全部放在一个变量中,在它们之间添加;并立即回显它们。
我怎么能这样做?

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

3 个答案:

答案 0 :(得分:58)

怎么样:

@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

答案 1 :(得分:44)

根据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):

  

最大的个人环境   可变大小是8192bytes。

答案 2 :(得分:0)

请注意,变量@fname@ext可以简单地连接在一起。这样:

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

将所有PDF文件重命名为&#34; filename_old.pdf&#34;