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

For*_*ega 72 windows batch-file string-concatenation

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

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

for /r %%i In (*.doc) DO echo %%i
Run Code Online (Sandbox Code Playgroud)

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

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

Rub*_*ias 60

关于什么:

@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
Run Code Online (Sandbox Code Playgroud)

  • 非常感谢你的回答!它只是解决了我在将一个类路径动态创建到批处理文件中的问题:)添加必要的修改,但我的问题是做了concat并且已修复它! (2认同)

dev*_*vio 45

根据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%
Run Code Online (Sandbox Code Playgroud)

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

最大个别环境变量大小为8192bytes.

  • 链接说65 THOUSAND KB,等于64MB.我不会争论,因为我从未处理过它. (2认同)