關(guān)于上期.bat文件(批處理)的擴(kuò)展分享
前言

? ? ? ?上期分享:用.bat文件(批處理)輸出目錄下文件名至Excel文件,本期詳細(xì)分享腳本的具體內(nèi)容。
腳本構(gòu)成和作用

? ? ? ?腳本主要由四塊構(gòu)成,具體如下(底部附微軟官方文檔鏈接):
(1)dir命令
? ? ? ?dir命令主要用于獲取指定目錄下文件和文件夾的信息,腳本中對應(yīng)的是dir %cd%/b,其中%cd%是一個系統(tǒng)變量,儲存當(dāng)前腳本所在路徑;/b是dir命令中的一個可選參數(shù),作用是限定dir命令輸出的結(jié)果只包含文件名和后綴的形式,例如test.xlsx。
? ? ? 整塊命令的作用就在于僅提取文件名和后綴,不包含文件夾和其他摘要信息;如果有進(jìn)一步需求的,dir命令可以一同輸出子文件夾中的信息,詳見官方文檔。
(2)for命令
? ? ? for命令等價于于編程語言中的for循環(huán)語句,腳本中對應(yīng)的是for %%i in (*) do @echo %%~ni,其中for [元素]?in ([元素集合]) do [執(zhí)行動作],這是固定格式。
? ? ? [元素]就是%%i,這是參數(shù)寫法,也可以寫成%%j、%%k等。
? ? ? [元素集合]就是*,代表的是dir命令中的輸出結(jié)果,一般是for命令和管道符"|"搭配時使用,管道符在后續(xù)說明。
? ? ? [執(zhí)行動作]就是@echo %%~ni,@echo是一個輸出動作,%%~ni是前面%%i的一種固定格式寫法,代表%%i數(shù)據(jù)中純文件名。
? ? ? 整塊命令作用是將dir命令的輸出結(jié)果(文件名+后綴)通過for命令逐一提取并輸出(純文件名)。
(3)find命令
? ? ?find命令的作用匹配對應(yīng)的文本,還可以起到過濾的作用,腳本中對應(yīng)的是|find /v "test"|find /v "GetFileName"
? ? ?/v是find命令的一個可選參數(shù),匹配時不包含后面對應(yīng)字符串。
? ? ?"test"和"GetFileName"是需要匹配的字符串,和上面的/v配合形成過濾效果。
? ? ?整塊命令作用是將前面dir和for命令輸出的結(jié)果進(jìn)行過濾,剔除"test"和"GetFileName"的文件名,因?yàn)檫@2個是腳本文件和輸出文件的文件名,不在我們需要統(tǒng)計的范疇內(nèi),所以這2個文件名字自定義之后,也要在腳本這里相應(yīng)的地方更新。
(4)管道符"|"和重定向符">>"
? ? ?管道符"|"連接前面的dir、for和2段find命令,其作用是將符號左邊的結(jié)果傳給右邊處理。
? ? ?重定向符">>"作用是將左邊的結(jié)果輸出至指定目錄下的文件中,若這個文件不存在,腳本將自動創(chuàng)建,若存在,就會在文件尾部添加數(shù)據(jù)。腳本中>>test.xlsx,沒有寫明路徑,代表直接按腳本當(dāng)前路徑使用。

? ? ?綜上所述,整個腳本的原理:dir命令僅獲取文件名+后綴名信息>>for命令逐個提取純文件名>>find命令剔除"test"和"GetFileName"的文件名>>重定向輸出至指定文件中。以下附微軟官方文檔地址:
? ? ?dir:https://learn.microsoft.com/en-us/previous-versions/windows/it-pro/windows-server-2012-r2-and-2012/cc755121(v=ws.11)
? ? ?for:https://learn.microsoft.com/en-us/previous-versions/windows/it-pro/windows-server-2012-r2-and-2012/cc754900(v=ws.11)
? ? find:https://learn.microsoft.com/en-us/previous-versions/windows/it-pro/windows-server-2012-r2-and-2012/cc725655(v=ws.11)
腳本的自定義

? ? ? ?通過改寫腳本,可以實(shí)現(xiàn)自定義目標(biāo)目錄和輸出目錄,以及輸出文件名和文件類型,例如以下改寫:
? ? ? ?每次運(yùn)行.bat文件前要提前打開文件, 將信息寫入?yún)?shù):input(目標(biāo)路徑),output(輸出路徑),filename(輸出文件名),fileformat(輸出文件格式)。輸出文件格式可以是txt、docx(doc)、xlsx(xls)等儲存文本信息的類型。
總結(jié)

? ? ? 編寫.bat文件(批處理),還可以實(shí)現(xiàn)其他更多方便的功能,有待進(jìn)一步學(xué)習(xí)和積累!