WindowsでCMD「内部コマンドまたは外部コマンドとして認識されていません」を修正する

beginner🪟 Windows2026-03-23| Windows 10、Windows 11 — コマンドプロンプト(cmd.exe)、PowerShell

Error Message

'command' is not recognized as an internal or external command, operable program or batch file
#windows#cmd#path#環境変数

エラーの内容

CMDを開いてコマンドを入力すると、こんなメッセージが表示されます:

'python' is not recognized as an internal or external command,
operable program or batch file.

nodegitffmpeg、あるいはインストールしたばかりの別のツールかもしれません。5分前に同僚のマシンでは動いていたのに。Windowsあるあるです。

なぜこうなるのか

CMDはPATH環境変数に登録されているディレクトリを上から順にスキャンして実行ファイルを探します。.exeが入っているフォルダがそのリストになければ、インストーラーがエラーなく完了していたとしても、CMDはそのプログラムの存在すら知りません。

原因はたいてい次の3つのどれかです:

  • インストーラーが自動でPATHに追加しなかった — ポータブルアプリや手動インストールでよくある
  • 手動でパスを追加したが、その後CMDを新しく開き直すのを忘れた
  • PATHのエントリが破損したり、誤って削除された(これは思ったより頻繁に起きる)

まず状況を確認する

現在のPATHを確認します:

echo %PATH%

読みにくいですか?PowerShellならずっと見やすく表示できます:

$env:PATH -split ';'

出力の中に、使いたいツールが入っているフォルダがあるか確認してください。Pythonの場合、インストール方法(全ユーザー向けかユーザー個別か)によって、C:\Python312\またはC:\Users\YourName\AppData\Local\Programs\Python\Python312\にインストールされることが多いです。

Windowsが実際にバイナリを見つけられるか確認します:

where python
where node
where git

パスが表示された場合、バイナリは存在しておりPATHは問題ないので、別の原因を探してください。*「指定されたファイルが見つかりません」*と表示された場合、そのフォルダは本当にPATHに入っていません。修正が必要です。

一時的な対処法 — 現在のセッションのみ

システム設定を変更せずに今すぐ動かしたい場合は、現在のCMDセッションに直接パスを追加します:

set PATH=%PATH%;C:\path\to\your\tool

Pythonの例 — 通常はメインフォルダとScriptsの両方が必要です:

set PATH=%PATH%;C:\Python312;C:\Python312\Scripts

CMDを閉じると無効になります。緊急時の対処法であり、根本的な解決策ではありません。

恒久的な修正 — システムPATHに追加する

方法1:GUI(最も簡単)

  • Win + Rを押してsysdm.cplと入力し、Enterを押す
  • 詳細設定タブ →環境変数を開く
  • システム環境変数の中からPathを選択して編集をクリック
  • 新規をクリックして、ツールのフォルダへのフルパスを貼り付ける
  • すべてのダイアログでOKをクリック
  • 新しいCMDウィンドウを開いて確認する — 既存のウィンドウには変更が反映されない

方法2:PowerShell(スクリプト化が可能)

# ユーザーPATHに追加(管理者権限不要)
$newPath = "C:\path\to\your\tool"
$currentPath = [Environment]::GetEnvironmentVariable("PATH", "User")
if ($currentPath -notlike "*$newPath*") {
    [Environment]::SetEnvironmentVariable("PATH", "$currentPath;$newPath", "User")
    Write-Host "PATH updated."
} else {
    Write-Host "Already in PATH."
}

全ユーザーにシステム全体で適用するには、"User""Machine"に変更し、PowerShellを管理者として実行してください。

方法3:setx(手軽なワンライナー)

setx PATH "%PATH%;C:\path\to\your\tool"

注意:setxはPATHが1024文字を超えると警告なしに切り捨てます。PATHのエントリがすでに20件以上ある場合は、GUIまたはPowerShellの方法を使ってください — 切り捨てられても警告は表示されません。

主なツールのデフォルトパス

# Python
C:\Python312\
C:\Python312\Scripts\
C:\Users\<name>\AppData\Local\Programs\Python\Python312\

# Node.js
C:\Program Files\nodejs\

# Git
C:\Program Files\Git\bin\
C:\Program Files\Git\cmd\

# FFmpeg(手動インストール)
C:\ffmpeg\bin\

# Java (JDK 21)
C:\Program Files\Java\jdk-21\bin\

例外ケース:PATHに入っているのにまだ失敗する

where pythonで有効なパスが返ってくるのに、pythonを実行するとエラーになることがあります。確認すべき原因が3つあります:

  • **Pythonが複数インストールされている:**Windows Storeのバージョンが、本物のインタープリターを隠すスタブを配置することがあります。where /R C:\ python.exeを実行してドライブ上のすべてのコピーを一覧表示し、どれが優先されるか整理してください。
  • **アプリ実行エイリアス:**設定 → アプリ → アプリの詳細設定 → アプリ実行エイリアスを確認してください。Pythonのトグルが誤った場所を指している場合は無効にしてください。
  • **PATHの順序が重要:**CMDは最初に一致したものを使います。3番目のスタブが8番目の本物のバイナリより優先されます。GUIエディターで正しいエントリを一番上に移動してください。

修正を確認する

  • 開いているすべてのCMDとPowerShellウィンドウを閉じる — 古い状態のままになっているため
  • 新しいCMDを開く
  • 次を実行する:
where python
python --version

期待される出力:

C:\Python312\python.exe
Python 3.12.x

両方の行が正しく表示されれば完了です。まだエラーが出る場合は、追加したパスに実際に.exeが存在するか確認してください:

dir C:\Python312\python.exe

おまけ:PATHの文字数制限

Windowsのレジストリでは、PATHの上限は2048文字です(ユーザーとシステムの合計)。この上限に達すると、新しいエントリは警告なしに無視されます — エラーも何も表示されません。現在の文字数を確認するには:

powershell -command "[Environment]::GetEnvironmentVariable('PATH','Machine').Length"

2000文字に近づいていますか?まずPATHを整理してください。すでにアンインストールしたプログラムへのエントリを削除してから、新しいものを追加しましょう。Python 3.9、Node 16、2021年のJava SDKなど、古いエントリはあっという間に積み重なります。

Related Error Notes