@echo off&setlocal enabledelayedexpansion
(for %%a in (*.txt) do (
for /f "usebackq delims=" %%b in ("%%a") do (
set "str2=!str1!"
set "str1=!str!"
set "str=%%b"
)
if defined str2 echo,!str2!&set "str2="
))>new.txt
start new.txt
1、setlocal enabledelayedexpansion --这是用于设置开启变量延迟的
开启了变量延迟并用“!!
”将变量扩起来,因此得到我们预期的结果。如果不用变量延迟,结果是这样的:ECHO 处于关闭状态
@echo off
set k=yyy
for /l %%i in (1,1,3) do (
set k= %%i ::对k进行循环赋值
echo %k% %%i
)
pause
@echo off&setlocal enabledelayedexpansion
set k=yyy
for /l %%i in (1,1,3) do (
set k= %%i
echo !k! %%i
)
pause
2、usebackq
集合中的文件名或路径含有空格时,需要用双引号将两者括起来,保持文件名或路径的完整性,在FOR命令中使用"usebackq"显得必要。
可参考:http://www.bathome.net/thread-9512-1-1.html
3、delims= 此处效果是不进行切割
delims 用来告诉for每一行应该拿什么作为分隔符,默认的分隔符是空格和tab键
“For /f”常用来解析文本,读取字符串。分工上,delims负责切分字符串,而tokens负责提取字符串。如果把字符串当作蛋糕,Delims像刀子,用来切蛋糕,tokens像叉子,用来取切好的蛋糕。
可参考:https://blog.csdn.net/mfx1986/article/details/5606228