1. 程式人生 > >windows批處理關閉介面程序,cmd關閉介面程序

windows批處理關閉介面程序,cmd關閉介面程序

cmd 關閉程序java

1. netstat -ano |findstr  埠號    得到程序號   (findstr 很像linux下的grep命令)

2.  taskkill /pid  程序號  /f 

3.  netstat -ano |findstr  埠號 可以再驗證下該埠還開著沒

如何用dat批處理檔案關閉某埠對應程式?

網上找到的大部分都是手動操作,第一步先查出埠,第二步在根據上一步查到的埠手動去關閉程序。但我的需求不是這樣的,我需要全自動處理。用於 dubbo 服務程序在 Windows 環境下的關閉。如果 Linux 環境,則不需那麼辛苦了。

找了大半天,終於在百度知道上得到參考案例(或許是我使用的關鍵詞不對),併成功試驗,感謝相關貢獻者。

答案一:

for /f "tokens=1-5 delims= " %%a in ('"netstat -ano|findstr "^:指定埠號""') do taskkill /pid %%e

答案二:

@echo off
set port=1234
for /f "tokens=1-5" %%i in ('netstat -ano^|findstr ":%port%"') do taskkill /pid %%m

我自己試驗成功的指令碼如下:

@echo off
set port=20812
for /f "tokens=1-5" %%i in ('netstat -ano^|findstr ":%port%"') do (
    echo kill the process %%m who use the port %port%
    taskkill /pid %%m
)

參考

迴圈讀取一批埠,並查詢對應PID是否存在,若存在則關閉,指令碼如下:

@echo off
for /l %%n in (20801,1,20812) do (
    @echo find the process which use port [%%n]
    for /f "tokens=1-5" %%i in ('netstat -ano^|findstr ":%%n"') do (
        tasklist /FI "PID eq %%m"|find /i "PID" && (
        echo PID:%%m 執行中,kill the process [%%m] who use the port [%%n]
        taskkill /F /pid %%m
        ) || echo PID:%%m 未執行 
    )
)

參考

殺死PID為4276的程序

E:\android-sdk-windows\tools>taskkill /PID 4276
錯誤: 無法終止 PID 為 4276 的程序。

原因: 只能強行終止這個程序(帶 /F 選項)。

E:\android-sdk-windows\tools>taskkill /F /PID 4276
成功: 已終止 PID 為 4276 的程序。

注意:  在cmd視窗使用單%,在寫批處理文字要換成雙%號