WHERE(実行ファイル検索)

にメンテナンス済み

「このコマンドの実行ファイルはどこにあるのか?」と調べたい場面があります。

WHERE コマンドは、指定した名前の実行ファイルの場所を検索するコマンドです。PATH 環境変数に設定されたディレクトリを基に検索を行います。

基本的な使い方

WHERE コマンド名

使用例

where notepad
- □ ×
コマンド プロンプトのアイコン
コマンド プロンプト
Microsoft Windows [Version xx.x.xxxxx.xxx]
(c) 2026 Ribbit App Development All rights reserved.
 
C:\users\user>where notepad
C:\Windows\System32\notepad.exe
C:\Windows\notepad.exe
C:\users\user>

notepad という名前の実行ファイルが存在するすべてのパスが表示されます。

where python
- □ ×
コマンド プロンプトのアイコン
コマンド プロンプト
Microsoft Windows [Version xx.x.xxxxx.xxx]
(c) 2026 Ribbit App Development All rights reserved.
 
C:\users\user>where python
C:\Users\user\AppData\Local\Programs\Python\Python312\python.exe
C:\users\user>
おすすめ書籍※ 広告を含む場合があります
中小企業経営者のためのRPA入門 RPA導入を成功させる方法

中小企業経営者のためのRPA入門 RPA導入を成功させる方法

60分でわかる! AIエージェント 超入門

60分でわかる! AIエージェント 超入門

コマンドラインの黒い画面が怖いんです。

コマンドラインの黒い画面が怖いんです。

知識・才能ゼロでもらく~に月10万円稼ぐ! よくわかるAI副業超入門

知識・才能ゼロでもらく~に月10万円稼ぐ! よくわかるAI副業超入門

チェック

開発環境で「python」や「node」などのコマンドがどのバージョンを参照しているか確認したい場合に特に便利です。

PowerShell では where.exe と入力する

PowerShell では where が Where-Object コマンドレットのエイリアスのため、期待した結果になりません。PowerShell から使う場合は where.exe notepad のように拡張子を付けて実行してください。

内部コマンドは検索できない

WHERE が検索できるのは実行ファイルやスクリプトなどの「ファイル」です。cd や dir のようにコマンドプロンプト自体に組み込まれた内部コマンドは、実行ファイルが存在しないため見つかりません。

検索される場所

WHERE は、まずカレントディレクトリを検索し、続けて PATH 環境変数に設定されたディレクトリを順に検索します。拡張子を省略した場合は、PATHEXT 環境変数に含まれる拡張子(.exe、.cmd、.bat など)が補完されて検索されます。

実際にコマンド名を入力したときは、一覧の上に表示されたものが優先して実行されます。

主要オプション

オプション説明
/R ディレクトリ指定したディレクトリから再帰的に検索
/Q結果を表示せず、終了コードだけを返す
/Fファイル名をダブルクォーテーションで囲む
/Tファイルのサイズと更新日時を表示

再帰検索(/R)

/R オプションを使用すると、指定したディレクトリ以下を再帰的に検索します。

where /R C:\ notepad.exe

ワイルドカードで検索

where /R C:\Scripts *.cmd
- □ ×
コマンド プロンプトのアイコン
コマンド プロンプト
Microsoft Windows [Version xx.x.xxxxx.xxx]
(c) 2026 Ribbit App Development All rights reserved.
 
C:\users\user>where /R C:\Scripts *.cmd
C:\Scripts\backup.cmd
C:\Scripts\cleanup.cmd
C:\Scripts\deploy\setup.cmd
C:\users\user>

ファイルサイズと日時を表示する(/T)

where /T notepad
- □ ×
コマンド プロンプトのアイコン
コマンド プロンプト
Microsoft Windows [Version xx.x.xxxxx.xxx]
(c) 2026 Ribbit App Development All rights reserved.
 
C:\users\user>where /T notepad
201216 2024-10-05 14:35:22 C:\Windows\System32\notepad.exe
201216 2024-10-05 14:35:22 C:\Windows\notepad.exe
C:\users\user>

サイズはバイト単位です。日時の表示形式は、お使いの Windows の地域設定によって異なります。

存在確認に使う(/Q)

/Q オプションを使用すると、画面への表示を抑制し、終了コードだけを返します。バッチファイルでの条件分岐に使用できます。

@echo off
where /Q git
IF NOT ERRORLEVEL 1 (
    echo Git はインストールされています。
) ELSE (
    echo Git が見つかりません。PATHを確認してください。
)

実践例:開発環境の確認

複数のツールがインストールされているか一括で確認するバッチファイルの例です。

@echo off
setlocal EnableDelayedExpansion
echo === 開発環境チェック ===
echo.

for %%T in (git node python java) do (
    where /Q %%T
    if !ERRORLEVEL! EQU 0 (
        echo [OK] %%T
    ) else (
        echo [NG] %%T が見つかりません
    )
)
endlocal

for ループの中で ERRORLEVEL を参照するため、!ERRORLEVEL! と遅延展開を使っています。詳しくは遅延展開の記事を参照してください。

WHERE が見つからない場合

検索対象のファイルが見つからない場合、WHERE コマンドはエラーメッセージを表示し、終了コード 1 を返します。構文が誤っているなどのエラーの場合は終了コード 2 を返します。

まとめ

操作コマンド
コマンドの場所を検索where コマンド名
再帰的に検索where /R ディレクトリ 名前
サイズと日時を表示where /T コマンド名
存在確認(表示なし)where /Q コマンド名

関連記事

練習問題

練習問題

バッチファイル内で特定のコマンドが利用可能か(PATH が通っているか)を確認する方法として正しいものはどれですか?

回答がサーバーに送信されることはありません
#コマンドプロンプト #バッチファイル #WHERE #コマンド #PATH