for 提取文本整行內(nèi)容的方法
在DOS(即Windows的命令提示符環(huán)境)中讀取文本文件(例如.txt文件)并逐行處理,可以使用幾種不同的方法。
以下是一些常見的方法:
方法1:使用type命令
type命令可以顯示文本文件的內(nèi)容,但它不支持逐行處理。如果你想查看文件內(nèi)容,可以使用它。如果要逐行讀取,可以考慮結(jié)合for循環(huán)。
方法2:使用for循環(huán)
for循環(huán)可以逐行讀取文件內(nèi)容。例如:
@echo off
for /F "delims=" %%A in (filename.txt) do (
echo %%A
)這里,filename.txt是要讀取的文件名。for /F "delims=" %%A in (filename.txt) do會逐行讀取文件,并將每行內(nèi)容存儲在變量%%A中,然后你可以對每行內(nèi)容進(jìn)行操作,比如在這個例子中是輸出每行內(nèi)容。
通常我們需要提取文本整行內(nèi)容時都是這么寫的。
for /f "delims=" %%a in (a.txt) do echo.%%a
但是分號開頭的行呢,for也會忽略掉,很多時候我們需要這些行,怎么辦。
用findstr 等外部命令太麻煩,用eol 忽略一個不可見字符,不失為一個不錯的辦法,但始終忽略了某個字符開頭的行,且獲取這個不可見字符也比較麻煩。
其實(shí)有更簡單的方法,就是把eol放在最后。
@echo off rem 提取所有行,可同時配合tokens使用,但無法以空格作分割符。 for /f "delims= eol=" %%a in (a.txt) do echo.%%a pause
案例
例如我們想將當(dāng)前文件夾下的目錄讀取出來, 并前后加上//,例如 jb51目錄變成 /jb51/
在dos下通過 dir /b >> list.txt 將目錄保存到list.txt中,記住是 >>不能用 >
例如當(dāng)前目錄有如下目錄 list.txt內(nèi)容如下
BaiduSyncdisk BaiduYunDownload Careland CloudMusic jb51tools KuGou logfiles MailMasterData movie music os PHPnow phpstudy QQMiniDL server study
然后通過如下命令
@echo off rem 提取所有行,可同時配合tokens使用,但無法以空格作分割符。 for /f "delims= eol=" %%a in (ff.txt) do echo /%%a/ >> f2.txt pause
執(zhí)行后就發(fā)現(xiàn)f2.txt文本內(nèi)容變成了如下
/BaiduSyncdisk/ /BaiduYunDownload/ /Careland/ /CloudMusic/ /ff.txt/ /jb51tools/ /KuGou/ /logfiles/ /MailMasterData/ /movie/ /music/ /os/ /PHPnow/ /phpstudy/ /QQMiniDL/ /server/ /study/
這樣就完成了。
方法3:使用findstr命令
如果你需要基于特定模式匹配來逐行讀取文件,可以使用findstr命令。例如,只顯示包含特定文本的行:
findstr "pattern" filename.txt
這里,pattern是你想匹配的文本模式。
方法4:使用PowerShell(更高級的功能)
如果你需要更高級的文本處理功能,可以考慮使用PowerShell腳本。例如,逐行讀取并處理:
powershell -Command "Get-Content 'filename.txt' | ForEach-Object { $_ }"這將在PowerShell中讀取filename.txt文件的內(nèi)容,并對每一行執(zhí)行操作(在這個例子中是直接輸出)。你可以替換{ $_ }部分來執(zhí)行更復(fù)雜的操作。
示例:使用PowerShell處理每行并執(zhí)行操作
powershell -Command "Get-Content 'filename.txt' | ForEach-Object { Write-Output 'Processing: $_' }"這個命令會為文件中的每一行添加前綴“Processing: ”。
結(jié)論
根據(jù)你的具體需求(比如是否需要基于模式匹配、是否需要更高級的文本處理功能),你可以選擇上述方法中的一種或幾種來逐行讀取和處理文本文件。對于簡單的文本處理任務(wù),直接使用DOS批處理中的for循環(huán)通常就足夠了。對于更復(fù)雜的文本處理需求,PowerShell提供了更加強(qiáng)大的功能。
相關(guān)文章
讓bat批處理以管理員權(quán)限運(yùn)行的實(shí)現(xiàn)方法
這篇文章主要介紹了讓bat批處理以管理員權(quán)限運(yùn)行的實(shí)現(xiàn)方法,需要的朋友可以參考下2020-08-08
批處理應(yīng)用根據(jù)文件內(nèi)容進(jìn)行重命名操作
批處理應(yīng)用根據(jù)文件內(nèi)容進(jìn)行重命名操作...2007-03-03

