@echo off for /f "tokens=2,10,11 delims= " %%l in ('tasklist /v') do ( echo "%%l - %%m" if "%%m%%n" == "Apache JMeter" taskkill /f /PID %%m if "%%m" == "PACS.jmx" taskkill /f /PID %%l ) 說明: 1. tasklist /v 會將當前運行的進程的詳細信息打印出來,其中包含“窗口標題”。 2. for /f "tokens=2,10,11 delims= " 將tasklist /v打印出的每條記錄通過空格分組並提出其中的第2,10,和11項
for tokens delims 用法說明
在For命令語句的參數F中,最難理解的就是Delims和Tokens兩個選項,本文簡單的做一個比較和總結。
“For /f”常用來解析文本,讀取字符串。分工上,delims負責切分字符串,而tokens負責提取字符串。如果把字符串當作蛋糕,Delims像刀子,用來切蛋糕,tokens像叉子,用來取切好的蛋糕。下面我們用實例來進行理解。
把以下內容保存為文本文件“歌曲列表.txt”,注意擴展名為“.txt”:
序號、歌手名-歌曲名.后綴名
1、饒天亮-玫瑰愛人.wma
2、高一首-我不願錯過.mp3
3、黃凱芹-傷感的戀人.MP3
4、黃燦-黃玫瑰.lrc
5、黎姿-如此這般的愛情故事.mp3
代碼1:顯示全部內容
@echo off
for /f %%i in (歌曲列表.txt) do echo %%i
pause>nul
運行結果:
序號、歌手名-歌曲名.后綴名
1、饒天亮-玫瑰愛人.wma
2、高一首-我不願錯過.mp3
3、黃凱芹-傷感的戀人.MP3
4、黃燦-黃玫瑰.lrc
5、黎姿-如此這般的愛情故事.mp3
講解:
如果不使用參數“/f”,運行結果只顯示括號里的文字字符“歌曲列表.txt”,而不能讀取文本文件“歌曲列表.txt”中的內容。可見,“/f”是解析文本字符串的好工具。
一、delims
假如只要序號,不要歌手名、歌曲名和后綴名,如何辦到?
代碼2:默認提取第一列
@echo off
for /f "delims=、" %%i in (歌曲列表.txt) do echo %%i
pause>nul
運行結果:
序號
1
2
3
4
5
講解:
"delims=、"表示定義頓號“、”為分隔符,並用該分隔符“、”切分文本字符串。字符串就是“歌曲列表.txt”里的內容,也就是文件里的文字和標點符號。
該頓號是原文中就有的。除了頓號“、”,原文中還有減號“-”和點號“.”,因此你也可以用它們來做分隔符。
代碼3:用減號“-”做分隔符
@echo off
for /f "delims=-" %%i in (歌曲列表.txt) do echo %%i
pause>nul
運行結果:
序號、歌手名
1、饒天亮
2、高一首
3、黃凱芹
4、黃燦
5、黎姿
講解:
因為,當減號“-”被用做分隔符時,每行內容被減號“-”分隔成前后兩半,默認只顯示前半部分,而后半部分連同分隔符減號“-”都被忽略(省略)了。
代碼4:用點號“.”做分隔符
@echo off
for /f "delims=." %%i in (歌曲列表.txt) do echo %%i
pause>nul
運行結果:
序號、歌手名-歌曲名
1、饒天亮-玫瑰愛人
2、高一首-我不願錯過
3、黃凱芹-傷感的戀人
4、黃燦-黃玫瑰
5、黎姿-如此這般的愛情故事
講解:
默認情況下,單純使用delims而不用tokens時,只顯示第一個分隔符前的內容,第一個分隔符和第一個分隔符后面的內容將被忽略。
代碼5:定義多個分隔符
@echo off
for /f "delims=、-." %%i in (歌曲列表.txt) do echo %%i
pause>nul
運行結果:
序號
1
2
3
4
5
講解:
原因是,當定義頓號“、”、減號“-”和點號“.”三個標點符號為分隔符后,原文被分隔成四個部分。
如第二行“1、饒天亮-玫瑰愛人.wma”將被分隔成“1”、“饒天亮”、“玫瑰愛人”和“wma” 四個部分。
從第一行到最后一行,每行的每個部分對應下來相當於一個豎列。因此,原文就有“序號”、“歌手名”、“歌曲名”、“后綴名”四列。
一般情況下,只讀取第一列的內容。后面的內容需要用tokens選項提取。
難點解釋:
例:
for /f "tokens=2*" %%i in (a.txt) do echo %%i %%j
講解:
"tokens=2*"提取第二列以后的所有字符,星號表示剩余的字符。輸出變量%%i對應於2的輸入變量,%%j對應於星號的輸入變量。
注意:
這里沒有使用delisms但卻以空格分隔了,是因為FOR默認空格是做分隔符的。
例:屏蔽掉“易經.txt”中的標點符號:
@echo off
for /f "tokens=1-5 delims=:," %%a in (易經.txt) do echo %%a %%b %%c %%d %%e
pause>nul
講解:
當delims定義了兩個分隔符“:”和“,”時,提取列要用到tokens。
有五個列,所以tokens要定義提取第一列至第五列,即1-5,相應地,后面需要五個輸出顯示變量%%a %%b %%c %%d %%e。你也可以這樣修改,避免過多的變量符號【補充?】
你也可以將最后多余的句號定義為分隔符“delims=:,。”將其屏蔽掉。
from : http://blog.sina.com.cn/s/blog_517d1cb00100wkwn.html
from: https://blog.csdn.net/chinajobs/article/details/52798681
from: https://www.jb51.net/article/17928.htm