0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

特定のポートを使用しているプロセスを終了するバッチ

Posted at

特定のポートを使用しているプログラムを探索して終了させるWindows用のバッチです。
引数に対象となるプロトコルとポートを指定します。複数入力可能です。

以下簡単な処理の説明です。

  • 引数からプロトコルとポート番号を取得する
  • netstat -anoで出力されたリストと比較し、PIDを取得する
  • 対象のPIDをtaskkillを使ってキルする
使い方の例
killprocess.bat UDP:62500-62550 TCP:56000
killprocess.bat
@echo off

:loop
if "%1"=="" goto end
for /f "tokens=1,2,3 delims=:- usebackq" %%i in ('%1') do (
	SET PROTOCOL=%%i
	SET STARTPORT=%%j
	SET ENDPORT=%%k
	CALL :killprocess %%i %%j %%k
)
shift
goto loop

:killprocess
setlocal enabledelayedexpansion

for /l %%n in (%2,1,%3) do (
	for /f "tokens=1,2,4,5" %%i in ('netstat -ano ^| find ":%%n"') do (
		echo %%j | find ":%%n">NUL
		if not ERRORLEVEL 1 if %1==%%i (
			SET PID=%%k
			if /i %1==TCP (
				SET PID=%%l
			)
			echo PROTOCOL:%1 Port:%%n PID:!PID!を終了します。
			taskkill /f /pid !PID!
		)
	)
)
exit /b
endlocal

:end

netstatコマンドで状態を取得しますが、TCPとUDPで出力のされ方が違う(厳密にいえば空白で出力されるので行が変わってくる)ので、以下のように読み込む位置をずらしています。

SET PID=%%k
if /i %1==TCP (
	SET PID=%%l
)

複数のポートを使うアプリの場合、複数回KILLされます。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?