WHERE(実行ファイル検索)
目次
「このコマンドの実行ファイルはどこにあるのか?」と調べたい場面があります。
WHERE コマンドは、指定した名前の実行ファイルの場所を検索するコマンドです。PATH 環境変数に設定されたディレクトリを基に検索を行います。
基本的な使い方
WHERE コマンド名
使用例
where notepad
notepad という名前の実行ファイルが存在するすべてのパスが表示されます。
where python
開発環境で「python」や「node」などのコマンドがどのバージョンを参照しているか確認したい場合に特に便利です。
Windows 10/11 では、Python 未インストールでも C:\Users\ユーザー名\AppData\Local\Microsoft\WindowsApps\python.exe が表示されることがあります。これは Microsoft Store を開くための入口で、実際の Python ではありません。一覧の中に本物のインストール先(...\Python312\python.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
複数のパターンや環境変数を指定して検索する
パターンはスペース区切りで複数指定できます。
```bat:.cmd と .bat ファイルをまとめて検索
where /R C:\Scripts *.cmd *.bat
`$環境変数名:パターン` の形式で、環境変数に設定されたディレクトリだけを対象に検索することもできます。
```bat:PATH に含まれるディレクトリから python を探す
where $PATH:python*
通常の where python は、カレントディレクトリと PATH の両方を検索します。この書式なら PATH だけに絞り込めます。
ファイルサイズと日時を表示する(/T)
where /T notepad
サイズはバイト単位です。日時の表示形式は、お使いの 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 コマンドはエラーメッセージを表示し、終了コード 1 を返します。構文が誤っているなどのエラーの場合は終了コード 2 を返します。
まとめ
| 操作 | コマンド |
|---|---|
| コマンドの場所を検索 | where コマンド名 |
| 再帰的に検索 | where /R ディレクトリ 名前 |
| サイズと日時を表示 | where /T コマンド名 |
| 存在確認(表示なし) | where /Q コマンド名 |