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

我知道以下的批命令回声的所有文件:

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

但现在我想把它们都放在一个变量,增加一个 ; 在之间和回他们所有的一次。
我怎么可以那样做?

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

解决方案

约什么:

@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

其他提示

基于鲁本斯的解决方案,需要启用延迟扩大环境变量(类型"帮助setlocal"或"帮助记录"),以便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”

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top