Windows的shell下,殺掉某程序

2021-07-09 23:31:52 字數 2741 閱讀 8860

使用了windows下的findstr、tasklist、taskkill、echo、for命令。

在windows的命令列下,怎麼殺掉某程序(比如,殺掉所有的mspaint.exe畫圖程序)

**:

@echo off

echo '===begin==='

for /f "tokens=1,2 delims= ," %%a in ('tasklist /m ^| findstr "mspaint.exe"') do (

echo name=%%a, pid = %%b, and will kill it.

taskkill /pid %%a

)echo "====end===="

pause

解釋:

括號裡的命令可能得到很多行文字,對於每一行文字,按照空格和逗號(delims= ,)進行擷取,取出來第1個字段送給%a,第2個字段送給%b,然後送到do裡面,然後列印一句話,然後用taskkill命令把這個程序號對應的程序殺掉。

命令echo:echo後面跟隨的語句,不需要用引號引起來。

下面的命令可以看到,datetimestr這個時間戳,不論在引號裡面還是外面,都正常顯示了,反倒是引號,也跟著輸出了。

@echo off

set datetimestr=%date:~0,4%/%date:~5,2%/%date:~8,2% %time:~0,2%:%time:~3,2%:%time:~6,2%

echo %datetimestr%, bat script.

echo '%datetimestr%, bat script.'

echo %datetimestr%",bat script."

echo %datetimestr%, bat script. > d:\test_echo.log

命令tasklist:自己用tasklist /?檢視幫助。執行如下命令並檢視log檔案。

tasklist /m > d:\tasklist.log

命令findstr:自己用findstr /?檢視幫助。執行如下命令並檢視log檔案。

tasklist /m | findstr "svchost.exe" > tasklist_findstr.log
命令taskkill:自己用taskkill /?檢視幫助。

命令for:用for /?檢視幫助。

通過幫助文件我們知道,for有一種使用方法:

for /f ["options"] %variable in ('command') do command [command-parameters]
幫助文件中有乙個例子非常好,請先檢視一下:

for /f "eol=; tokens=2,3* delims=, " %i in (myfile.txt) do @echo %i %j %k
對於for /f 的【in ('command')】部分:

其中的command需要替換成乙個命令語句,比如【tasklist /m | findstr "mspaint"】,但是替換時需要注意:

①命令需要用單引號引上②豎線(|)之前需要乙個轉義字元^,為【'tasklist /m ^| findstr "mspaint.exe"'】。

對於for /f 的【do command [command-parameters]】部分:

do後面可以直接跟乙個命令,也可以在do後面寫一對小括號,將許多語句寫在小括號裡面。

注意:do後需要有乙個空格,空格後是左括號;即,do和左括號在一行,但不能寫在一起。

@echo off

echo '===begin==='

for /f "tokens=1,2" %%a in ('tasklist /m ^| findstr "svchost.exe"') do (

echo name=%%a

echo pid==%%b

echo name=%%a, pid=%%b

echo *****====

)echo "====end===="

pause

對於for /f 的【%variable】部分:

建議寫【%a】,如果要寫在.bat檔案裡,需要多加乙個%號,為【%%a】。不過,當然可以寫%i或%x等。

對於for /f 的【["options"]】部分:

建議閱讀幫助文件中的例子。

我們檢視了【tasklist /m | findstr "svchost.exe" > tasklist_findstr.log】生成的檔案的格式。生成的log檔案中,各個字段之間是用空格和逗號分隔的。

又【delims=***      - 指分隔符集。這個替換了空格和跳格鍵的預設分隔符集】,所以,我們需要寫成【delims= ,】才行。

又【tokens=x,y,m-n  - 指每行的哪乙個符號被傳遞到每個迭代的 for 本身】,並且【%variable】寫的是【%a】,那麼:

寫成【tokens=1,2,3,4,5】那麼會將第1~第5個字段傳到迭代的for本身(就是傳到do裡面),用%a~%e獲取第1~第5個字段的值。

寫成【tokens=1,3-5】那麼會將1和3~5送到do裡面。其中,1對應%a,3對應%b,4對應%d,5對應%e。

寫成【tokens=2,*】那麼會將2和2後面的字段送到do裡面去。其中2對應%a,2後面的所有資料對應%b。

Windows檢視埠並殺

開始 執行 cmd 進入命令提示符 輸入netstat ano 即可看到所有連線的pid,之後在任務管理器 右鍵電腦螢幕的狀態列即可找到 中找到這個pid所對應的程式。如果任務管理器中沒有pid這一項,可以在任務管理器中選 檢視 選擇列 1.檢視所有連線的pid 開始 執行 cmd 輸入netsta...

windows平台下如何用Python殺程序

參考 python語言 windows平台下如何用python殺程序 from 這段 來自於乙個很簡單的場景 在python中調乙個程式。給這個程式設定乙個timeout 假如一段時間程式還沒有返回,就殺掉這個這個新開的程序。本來以為我肯定不是第乙個遇到這個問題的人,但是網上搜了好久都沒找到完整的辦...

Windows下的Apache Tomcat連線

win32 apache2.0.49.zip,在壓縮包中的modules可找到mod jk2.so 將mod jk2.so拷到以下兩個目錄 tomcat home conf apache home modules 將apache home conf 下的httpd.conf作以下修改和新增 修改 一...