2
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

【一瞬で解決】Web開発でPortが使えない!Port番号からPIDを強制終了する究極の時短ツール(VBS+BAT)

2
Last updated at Posted at 2025-11-21

はじめに:僕たちがWeb開発で感じる、あの地味なストレス

はじめまして、学生エンジニアの@huyunokiです。

Webアプリケーション開発をしていると、必ず遭遇する地味なストレスがありますよね。
このエラーが出たとき、皆さんはどうしていますか?

「前回使っていたポート(例:8080)が、なぜかまだ解放されていない…!」

※ツール作成方法と使用方法だけみたい忙しい人向け

このツールで使用しているnetstat、taskkill、.batファイルなどのコマンドと機能は、すべてWindows専用です。MacやLinuxなどのOSでは動作しませんので、ご注意ください。

方法A: コマンドプロンプトでPIDを特定し、taskkillで削除

netstat -ano | findstr :8080
taskkill /pid [PID] /f

普段使わないコマンドを調べて、コピーして…意外と手間

方法B: タスクマネージャーからPIDを検索して終了

PIDがわかってても、タスクマネージャーの膨大なリストから探すのに時間がかかる…

こうした作業は、本来の「開発」とは関係のない「雑務」です。そこで僕は、「ポート番号を入れるだけで、一瞬でポートを解放できる」究極の時短ツールを自作しました。

この記事では、このツールの作成方法と、なぜこのツールが管理者権限で動く必要があるのかを解説します。

解決策:Port番号を入力したら、あとはツールにお任せ!

この自作ツールは、以下のシンプルな流れを全自動で実行します。

  1. ポート番号を尋ねる。(例: 8080)
  2. netstatコマンドを実行し、ポートを占有しているPIDを特定。
  3. taskkillコマンドを実行し、そのPIDだけを強制終了(キル)。
  4. 結果を表示して終了。

なぜVBScript(管理者実行)が必要なのか?

皆さんのように経験のある方ならお気づきの通り、Webサーバーなどが占有するポートを解放するには、しばしば管理者権限が必要です。

通常のユーザー権限では、自分より高い権限で動いているプロセス(OSのサービスや別のユーザーのプロセスなど)をキルできません。

そこでこのツールでは、最初にVBScriptを使って、メインの処理を行うbatファイルを強制的に管理者権限で起動させています。

これで、面倒なポート番号でも、確実に狙い撃ちできるようになるわけです。

ツール作成方法と使用方法

ツール作成方法

以下2つのファイルを同じフォルダ階層に入れてください。

ファイル名:killport.bat

killport.bat
@echo off
chcp 65001 > nul 

:START_PROMPT
set "PID="
set /p PORT="停止したいポート番号を入力してください (例: 8080): "

echo.
echo ===================================================
echo   ポート %PORT% を使用しているプロセスを検索します
echo ===================================================
echo.

for /f "tokens=5" %%a in ('netstat -ano ^| findstr :%PORT%') do (
    set "PID=%%a"
    if defined PID if not "%%a"==" " goto :KILL_PROCESS
)

echo ポート %PORT% を使用しているプロセスは見つかりませんでした。
goto :EOF_END

:KILL_PROCESS
echo.
echo --- プロセスID (PID) %PID% を特定しました。---
echo.

SET "PID=%PID: =%"

CALL taskkill /f /pid %PID%
set TASKKILL_RESULT=%ERRORLEVEL%

if %TASKKILL_RESULT% equ 0 (
    echo.
    echo ----------------------------------------------------
    echo   成功: PID %PID% のプロセスが正常に終了しました。
    echo ----------------------------------------------------
) else (
    echo.
    echo ----------------------------------------------------
    echo   終了失敗: PID %PID% 
    echo   ※ プロセスが既に存在しない可能性があります。
    echo ----------------------------------------------------
)

:EOF_END
pause

ファイル名:admin.vbs

admin.vbs
Set UAC = CreateObject("Shell.Application")

' 実行パスを自身のフォルダに設定
script_path = Replace(WScript.ScriptFullName, WScript.ScriptName, "")

' cmd.exeとkillport.batを管理者権限で実行
UAC.ShellExecute "cmd.exe", "/c cd /d """ & script_path & """ & killport.bat", "", "runas", 1

ツール使用方法

1, admin.vbsを起動

image.png

2, このアプリがデバイスに変更を加えることを許可しますかで「はい」を選択

image.png

3, 削除対象のPort番号を入力し、Enterを押す

image.png

4, 削除完了!

image.png

最後に

最後まで読んでいただき、ありがとうございました!

このツールが、皆さんの開発中の「ポート渋滞」を解消し、気持ちよくコーディングに集中できる助けになれば幸いです。もし感想や質問があれば、ぜひコメントで教えてください!

2
1
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
2
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?