はじめに:僕たちが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番号を入力したら、あとはツールにお任せ!
この自作ツールは、以下のシンプルな流れを全自動で実行します。
- ポート番号を尋ねる。(例: 8080)
- netstatコマンドを実行し、ポートを占有しているPIDを特定。
- taskkillコマンドを実行し、そのPIDだけを強制終了(キル)。
- 結果を表示して終了。
なぜVBScript(管理者実行)が必要なのか?
皆さんのように経験のある方ならお気づきの通り、Webサーバーなどが占有するポートを解放するには、しばしば管理者権限が必要です。
通常のユーザー権限では、自分より高い権限で動いているプロセス(OSのサービスや別のユーザーのプロセスなど)をキルできません。
そこでこのツールでは、最初にVBScriptを使って、メインの処理を行うbatファイルを強制的に管理者権限で起動させています。
これで、面倒なポート番号でも、確実に狙い撃ちできるようになるわけです。
ツール作成方法と使用方法
ツール作成方法
以下2つのファイルを同じフォルダ階層に入れてください。
ファイル名: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
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を起動
2, このアプリがデバイスに変更を加えることを許可しますかで「はい」を選択
3, 削除対象のPort番号を入力し、Enterを押す
4, 削除完了!
最後に
最後まで読んでいただき、ありがとうございました!
このツールが、皆さんの開発中の「ポート渋滞」を解消し、気持ちよくコーディングに集中できる助けになれば幸いです。もし感想や質問があれば、ぜひコメントで教えてください!



