@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