コマンドプロンプトでコマンドやバッチファイルを実行すると、「内部コマンドまたは外部コマンド、操作可能なプログラムまたはバッチファイルとして認識されていません」というエラーメッセージが表示されることがあります。
このエラーは、使用できないコマンドを実行した場合や、コマンドを実行するために必要な実行ファイルが存在しない場合に発生します。
本記事では、コマンドプロンプトに「認識されていません」エラーが出た時の対処法について詳しく紹介します。環境はWindows10を想定しています。
この記事の内容
対処1: コマンドの入力に誤りがないか確認する
コマンドプロンプトの「認識されていません」エラーは、入力したコマンドに誤りがあると発生することがあります。
そのため、基本的な確認事項ですが、入力したコマンドに誤りがないか以下の項目について確認してください。
- コマンドにタイプミスはないか
- /(スラッシュ)と\(バックスラッシュ)、-(ハイフン)と_(アンダースコア)を打ち間違えていないか
- 半角文字を全角文字で入力していないか
- スペース(空白)は正しい位置に挿入されているか
- ""(ダブルクォーテーション)や''(シングルクォーテーション)は正しく閉じられているか
正しいコマンドを入力しているにも関わらず「認識されていません」エラーが表示される場合は、次の対処方法に進んでください。
対処2: 必要なプログラムをインストールする
実行するコマンドによっては特定のプログラムをインストールしないと、「認識されていません」エラーが出て使用できない場合があります。
例えば、gitコマンドの場合は「Git」、adbコマンドの場合はAndroidStudioの「SDK Platform-Tools」をインストールする必要があります。
そのため、実行しようとしているコマンド、もしくはプログラムの詳細を確認して、コマンドを実行するための環境が整っているか確認してください。
対処3: 実行ファイルをフルパスで指定する
コマンドプロンプトの「認識されていません」エラーは、実行ファイルが見つからないことが原因で発生します。
そのため、コマンドに含まれる実行ファイルをフルパスに変換することで、正常に実行できる可能性があります。また、コマンドに入出力ファイルが含まれている場合は、同様にフルパスに変換することでエラーが解決する可能性があります。
コマンドに含まれる実行ファイル、入出力ファイルをフルパスに変換する具体的な例は以下の通りです。
- 実行ファイルをフルパスで指定して実行する:
- 例: 「DISM /Online /Cleanup-image /Restorehealth」のコマンドを実行したい場合は、以下のように「DISM」の部分をフルパスに変換して実行します。「/Online...」以降はオプションなので、そのまま入力します。
"C:\Windows\System32\Dism.exe" /Online /Cleanup-image /Restorehealth
- 例: 「DISM /Online /Cleanup-image /Restorehealth」のコマンドを実行したい場合は、以下のように「DISM」の部分をフルパスに変換して実行します。「/Online...」以降はオプションなので、そのまま入力します。
- 入出力ファイルをフルパスに変換する:
- 例: 「program.py file.txt」のコマンドをフルパスに変換すると以下のようになります。「program.py」、「file.txt」というファイルはどちらもデスクトップに保存しているものとします。
"C:\Users\username\Desktop\program.py" "C:\Users\username\Desktop\file.txt"
- 例: 「program.py file.txt」のコマンドをフルパスに変換すると以下のようになります。「program.py」、「file.txt」というファイルはどちらもデスクトップに保存しているものとします。
ファイルパスの""(ダブルクォーテーション)は必ずしも必要ではありませんが、ファイル名やフォルダ名にスペースが含まれている場合はダブルクォーテーションが無いとエラーになるので注意してください。
ただし、実行ファイルをフルパスで指定してコマンドを正常に実行できても、毎回フルパスを入力する必要があります。実行ファイルをフルパスで指定することが手間な場合は、次の対処も併せて参考にしてください。
対処4: 環境変数に実行ファイルのパスを登録する
コマンドプロンプトは、Windowsの環境変数に設定されているパスから実行ファイルを認識してコマンドを実行します。
環境変数に実行ファイルへのパスが登録されていないと、実行ファイル名でコマンドを実行しても「認識されていません」のエラーが発生します。
そのため、環境変数を編集して実行ファイルへのパスを登録することで、正常にコマンドを実行できるようになります。また、毎回フルパスを指定する手間も省けます。
環境変数の設定を編集して新しいパスを登録するには、以下の手順で操作してください。
- 「Windowsマーク」を右クリックして「システム」を選択します。
- 設定ウィンドウが開いたら、右ペインをスクロールして「関連設定」の中にある「システムの詳細設定」をクリックします。
- 「システムのプロパティ」ウィンドウが開いたら、「詳細設定」タブの中にある「環境変数」をクリックします。
- 「環境変数」ウィンドウが開いたら、下部の「システム環境変数」の一覧で「Path」という変数を探してダブルクリックします。
- 「環境変数名の編集」ウィンドウが開きます。このリストの中に、コマンドを実行するために必要なプログラムのフォルダパスが登録されているか確認します。
- 例: コマンドで「C:\Program Files\Application\app.exe」の実行ファイルを使う場合は、環境変数に「C:\Program Files\Application」のフォルダパスを登録する必要があります。
- 標準で使えるはずのコマンド(ipconfig等)が使えない場合は、「C:\Windows\system32」が登録されているか確認してください。
- プログラミングの開発環境構築を行う場合は、開発ツールのインストールフォルダを登録する必要があります。
- フォルダパスが登録されていない場合は、「参照」をクリックして「実行ファイルが配置されているフォルダ」を選択し「OK」をクリックしてください。
- フォルダパスを手入力したい場合は、「新規」をクリックして実行ファイルのフォルダパスを入力します。
- 実行ファイルのフォルダパスを登録できたら「OK」をクリックして設定を保存します。
以上の手順で、環境変数に実行ファイルのパスを登録することができます。登録ができたらコマンドプロンプトを再起動してから、コマンドを実行してエラーが解消されたか確認してください。
対処5: カレントディレクトリを変更する
コマンドプロンプトのカレントディレクトリを実行ファイルがあるフォルダに変更することでも、「認識されていません」のエラーを解決することができます。
カレントディレクトリを変更して実行ファイルを実行するには、以下の手順で操作します。
- コマンドプロンプトを起動します。
- 「実行ファイルのフォルダパス」を指定したcdコマンドを入力して、Enterキーを押して実行します。
cd 実行ファイルのフォルダパス
- 例: 「C:\Program Files\Application\app.exe」の実行ファイルを使用したい場合は、以下のように入力します。
cd "C:\Program Files\Application"
- Cドライブ(システムドライブ)以外に実行ファイルがある場合は、以下のようにドライブを切り替えてからcdコマンドを実行してください。
D: cd "D:\Program Files\Application"
- 例: 「C:\Program Files\Application\app.exe」の実行ファイルを使用したい場合は、以下のように入力します。
- カレントディレクトリが指定したフォルダパスに変更されます。プロンプトの左側に表示されているフォルダパスが変わったことを確認します。
- 実行ファイルのコマンドをパス指定なしで実行して、エラーが解決したか確認します。
対処6: 実行ファイルをSystem32フォルダに配置する
コマンドで使用するプログラムファイルを、「C:\Windows\System32」フォルダに配置して、「認識されていません」のエラーを回避することもできます。
この方法は、環境変数の設定を行わずに実行ファイルをパスなしで実行することができます。
ただし、システムフォルダ内に実行ファイルを配置するため非推奨の方法です。また、特定のフォルダにインストールする必要がある実行ファイルは機能しない点に注意してください。
実行ファイルをSystem32フォルダに配置するには、以下の手順で操作します。
- 管理者アカウントでサインインしていることを確認します。
- エクスプローラーで実行ファイルがあるフォルダを開いて、実行ファイルと関連するファイルを全てコピーします。
- 「C:\Windows\System32」のフォルダを開いて、コピーしたファイルをペーストします。
以上の手順で、System32フォルダに実行ファイルを配置できたら、コマンドプロンプトを再起動してから、コマンドを実行しエラーが解決したか確認します。