我有一个目录,我想在其中列出所有.doc
带有;
.
我知道以下批处理命令会回显所有文件:
for /r %%i In (*.doc) DO echo %%i
但现在我想将它们全部放在一个变量中,;
在两者之间添加一个并一次全部回显它们。
我怎样才能做到这一点?
set myvar="the list: "
for /r %%i In (*.doc) DO <what?>
echo %myvar%
我有一个目录,我想在其中列出所有.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
根据 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
or@ext
可以简单地连接。这:
forfiles /S /M *.pdf /C "CMD /C REN @path @fname_old.@ext"
将所有 PDF 文件重命名为“filename_old.pdf”