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>
チェック

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

Python が見つかるのに実行できない場合

Windows 10/11 では、Python 未インストールでも C:\Users\ユーザー名\AppData\Local\Microsoft\WindowsApps\python.exe が表示されることがあります。これは Microsoft Store を開くための入口で、実際の Python ではありません。一覧の中に本物のインストール先(...\Python312\python.exe など)があるかを確認してください。

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 オプションを使用すると、指定したディレクトリ以下を再帰的に検索します。

Cドライブ全体からnotepad.exeを検索
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>

複数のパターンや環境変数を指定して検索する

パターンはスペース区切りで複数指定できます。

```bat:.cmd と .bat ファイルをまとめて検索 where /R C:\Scripts *.cmd *.bat


`$環境変数名:パターン` の形式で、環境変数に設定されたディレクトリだけを対象に検索することもできます。

```bat:PATH に含まれるディレクトリから python を探す
where $PATH:python*

通常の where python は、カレントディレクトリと PATH の両方を検索します。この書式なら PATH だけに絞り込めます。

ファイルサイズと日時を表示する(/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を確認してください。
)

実践例:開発環境の確認

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

check_tools.cmd
@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 が通っているか)を確認する方法として正しいものはどれですか?

正しいものを 1 つ選んでください。

  1. where /Q コマンド名 を実行し、ERRORLEVEL を確認する
  2. where /E コマンド名 を実行する
  3. where /CHECK コマンド名 を実行する
#コマンドプロンプト #バッチファイル #WHERE #コマンド #PATH