批處理獲取文件倒數第三行

@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

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章