如何连接Windows批处理文件中的字符串?
问题描述:
我有一个目录,我想用;
列出所有.doc
文件。如何连接Windows批处理文件中的字符串?
我知道下面的批处理命令回声的所有文件:
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
答
基于鲁本斯的解决方案,您需要启用ENV变量(键入 “help SETLOCAL” 或 “帮助CMD”)的延迟扩展,使得变种是正确的
@echo off
setlocal enabledelayedexpansion
set myvar=the list:
for /r %%i In (*.sql) DO set myvar=!myvar! %%i,
echo %myvar%
另外考虑以下限制(MSDN):
在循环评价10最大个人环境 可变大小是8192字节。
答
请注意,变量@fname
或@ext
可以简单连接。这:
forfiles /S /M *.pdf /C "CMD /C REN @path @[email protected]"
重命名所有的PDF文件 “filename_old.pdf”
非常感谢这个答案!它只是解决了一个动态创建类路径到批处理文件的问题:)添加了必要的修改,但是我的问题是在执行concat并且已经修复了它! – Charliemops 2011-08-30 14:17:13