1. Windows cmd 指令應用
不須使用任何程式軟體能與電腦溝通,使用者利用Command line,依自己設定之條件,在電腦上輸入cmd後,執行自己完成的指令集,便可由電腦將檔案內所需的項目選出,再作後續的加工運用
2. 運用例說明
2.1 某個檔案input file內多筆紀錄,欲尋找每筆紀錄內,某個項目(field)其值若大於 80 的該筆紀錄選出,以便後續可以加工處理出所需的內容。
2.2
input file檔名CMD_jsonFile.txt內容包含個別機器之效能數據,如CPU 使用率,硬碟各槽之使用量,使用率等,讀取每筆資料,若判斷出硬碟槽使用率大於80%之數據時,則將該筆資料選取,並開始做後續加工處理
2.3本例設計
set Jdate=
For /f "delims=; tokens=1,2*" %%i
in ('findstr /r "\<Use_..:.[8-9][0-9]}\> \<Use_..:.100}\>" "CMD_jsonFile.txt" ')
do (
set Jdate=%%j
set WMI_detail=%%k
CALL :Judge_DATE %%i
) ,
[指令註解]
<1> "delims=; tokens=1,2*" %%i
delims=; 對象資料內,以” ; ” 作區隔,以便可取得想要的項目
tokens=1,2* 符合條件之該筆資料,取出以”;” 區隔後的第一個項目,第二個項目,以及第二個以後的全部項目。
%%i : 表示選取之項目以I j k l m…之順序決定該項目之變數名
第一區隔項目 以i 變數 運用
第二區隔項目 以j 變數 運用
第二區隔 項目以後之全部資料 以k 變數 運用
本例若為tokens=1,2,3,4
則可多取得第3個 CPU 使用項目,第4個磁槽使用項目
<2>.
FOR /F ["options"] %variable IN ('string') DO command [command-parameters]
功能 : 對一組檔案中的每個檔案執行指定的命令。
<3>. findstr
功能 : 在檔案中搜尋字串
in ('findstr /r "\<Use_..:.[8-9][0-9]}\> \<Use_..:.100}\>" "CMD_jsonFile.txt" ')
本例出力取出之條件: 若有使用率Use > 80 , 或 100
則取得三個變數之值 : i 機器名, j 資料日,k 詳細WMI資料
條件判斷之設計如下:
"\<Use_..:.[8-9][0-9]}\> \<Use _..:.100}\>"
即是取出 第一組
Use_..:.後面之第一數字是8 or 9 and 第二數字是0 到9
或則第二組
Use_..:.後面數字為100
<4>. Do
選取該筆資料項目後,欲執行的各種動作可以於Do (…) 內註明,亦可CALL 另一個副程式,可以非常彈性地靈活應用,如下
do (
set Jdate=%%j
set WMI_detail=%%k
CALL :Judge_DATE %%i
….
)
2.4 入力 file CMD_jsonFile.txt 內有四筆record 內容如下:
XTW-AP;Mon, 2024-06-24 09:50;{"CPU_%": 30, "MemTot_GB": 63.43, "MemUse_GB": 48.68};[{"Part": "C:", "TOT_GB": 200.0, "Use_GB": 46.35, "Use_%": 23}, {"Part": "D:", "TOT_GB": 357.04, "Use_GB": 20.26, "Use_%": 5}]
XTW-BK;Wed, 2024-06-26 10:20;{"CPU_%": 25, "MemTot_GB": 16.0, "MemUse_GB": 3.92};[{"Part": "D:", "TOT_GB": 99.87, "Use_GB": 13.67, "Use_%": 13}, {"Part": "C:", "TOT_GB": 99.45, "Use_GB": 25.45, "Use_%": 25}]
XTW-DB1;Thu, 2024-06-27 08:00;{"CPU_%": 1, "MemTot_GB": 31.85, "MemUse_GB": 7.38};[{"Part": "C:", "TOT_GB": 150.0, "Use_GB": 25.87, "Use_%": 17}, {"Part": "D:", "TOT_GB": 200.0, "Use_GB": 166.08, "Use_%": 83}]
XTW-DB2; Thu, 2024-06-27 09:50;{"CPU_%": 44, "MemTot_GB": 63.43, "MemUse_GB": 48.87};[{"Part": "C:", "TOT_GB": 200.0, "Use_GB": 46.39, "Use_%": 23}, {"Part": "D:", "TOT_GB": 357.04, "Use_GB": 20.31, "Use_%": 5}]
2.5 實例執行後,讀取四筆資料中,只有第三筆被選出
XTW-DB1;Thu, 2024-06-27 08:00;{"CPU_%": 1, "MemTot_GB": 31.85, "MemUse_GB": 7.38};[{"Part": "C:", "TOT_GB": 150.0, "Use_GB": 25.87, "Use_%": 17}, {"Part": "D:", "TOT_GB": 200.0, "Use_GB": 166.08, "Use_%": 83}]
選出資料如下
i ->機器名: XTW-DB1 ,
j ->資料日: Thu, 2024-06-27 08:00
k ->其遺詳細資料如下:
{"CPU_%": 1, "MemTot_GB": 31.85, "MemUse_GB": 7.38};[{"Part": "C:", "TOT_GB": 150.0, "Use_GB": 25.87, "Use_%": 17}, {"Part": "D:", "TOT_GB": 200.0, "Use_GB": 166.08, "Use_%": 83}]
3. cmd 命令追加說明
3.1 FOR
功能 : 對一組檔案中的每個檔案執行指定的命令。
FOR %variable IN (set) DO 命令 [command-parameters]
%variable 指定一個可以取代的參數。
(set) 指定由一或多個檔案組成的檔案組。您可使用通配字元。
command 指定命令來執行每一個檔案。
command-parameters
為所指定的命令指定變數或參數。
FOR擴充命令格式:
FOR /F ["options"] %variable IN (file-set) DO command [command-parameters]
FOR /F ["options"] %variable IN ('string') DO command [command-parameters]
FOR /F ["options"] %variable IN (`command`) DO command [command-parameters]
3.2 findstr
功能 : 在檔案中搜尋字串。
FINDSTR [/B] [/E] [/L] [/R] [/S] [/I] [/X] [/V] [/N] [/M] [/O] [/P] [/F:file]
[/C:string] [/G:file] [/D:dir list] [/A:color attributes] [/OFF[LINE]]
strings [[drive:][path]filename[ ...]]
/B 如果是在行的開端,則符合類型。
/E 如果是在行的尾端,則符合類型。
/L 逐字使用搜尋字串。
/R 使用搜尋字串為一般表示式。
/S 在現存目錄及所有的子目錄中搜尋符合的檔案。
/I 指定搜尋不區分大小寫。
/X 列印完全符合的行數。
/V 只列印不含相符字串的行數。
/N 列印每一行符合的行數前的行編號。
/M 只列印包含相符字串的檔案的檔案名稱。
/O 列印每一個相符行之前的字元位移。
/P 跳過沒有可列印字元的檔案。
/OFF[LINE] 不要跳過有離線屬性設定的檔案。
/A:attr 以兩個十六進位數字指定色彩屬性。請參閱 "color /?"。
/F:file 從指定的檔案讀取檔案清單 (/ 代表主控台)。
/C:string 使用特定的字串作為逐字搜尋的字串。
/G:file 從指定的檔案取得搜尋字串 (/ 代表主控台)。
/D:dir 搜尋以分號隔開的目錄清單。
strings 要搜尋的文字。
[drive:][path]filename 指定要搜尋的一個或多個檔案。
除非引數的字首有 /C,否則請以空格將多重搜尋字串分開。
例如,'FINDSTR "hello there" x.y' 將會在檔案 x.y 中
搜尋 "hello",或 "there"。'FINDSTR /C:"hello there" x.y'
將會在檔案x.y 中搜尋 "hello there"。
4擴充運用
4.1日常使用的檔案,可依自己需要,設定條件選出,例如
上班打卡時間遲到者之選取
人事資料內年齡大於60者選出
各科成績分數小於60者選出
公司員工住所在”高雄市”者選出
… …
4.2 input file 若是Excel 檔,可先轉成csv or txt檔之格式,一樣可使用上述功能
4.3 cmd 設計完成後,再作成bat執行檔,於Windows工作排程器(task Scheduler)設定,讓程式依照排程自動執行,並將選出之資料加工處離後,利用eMail or LINE等方法,自動送出給擔當者,以便可即時確認對應
-----by linct-----