Windows TIPS
[System Environment]
  Windows TIPS TOPへ
Windows TIPS全リストへ
内容別分類一覧へ

whereコマンドでファイルを探す

解説をスキップして操作方法を読む

デジタルアドバンテージ 打越 浩幸
2009/04/10
対象OS
Windows Vista
Windows Server 2008
whereコマンドを使うと、実行ファイルの検索や、特定のワイルドカードに一致するファイルの検索ができる。
検索パスとして環境変数を指定すると、そこで定義されたパスの中から名前が一致するファイルを検索できる。

解説

 TIPS「whichコマンドを作る」では、UNIXやLinuxなどで利用できるwhichコマンド(の簡易版)を作成する方法を紹介した。whichコマンドは、引数として指定されたコマンドがどこの実行パス(環境変数PATHの指すフォルダ)に存在するかを調べて表示する。複雑なPATH環境変数を利用しているような場合に、実際にどのファイルが起動されているかを調べるのに役に立つ。

 UNIX/Linuxにはwhichと似たコマンドとして、whereisというコマンドもある。こちらは実行ファイルだけでなく、マニュアル・ページやソース・コードなども検索対象としている。

 Windows Vista/Windows Server 2008以降のWindows OSには、whereという名前のコマンドが用意されている。これはwhichとwhereis、(UNIX/Linuxの)findなどを合わせたようなコマンドで、引数に指定された名前パターンを持つファイルを検索するためのコマンドである(ただし外部コマンドの呼び出し機能はない。ファイルを列挙するだけである)。本TIPSでは、このwhereコマンドの使い方について解説する。このコマンドは、もともとはWindows 2000のResource Kitに含まれていたものであるが、機能が拡張されており、挙動や引数など少し異なる。Windows 2003以前のOSの場合は、このResource Kit版のwhereコマンドを使うか、上記TIPSのwhichコマンド、「dir /s <ファイル名パターン>」といったコマンドを利用していただきたい(「dir /s」の意味はTIPS「dirコマンドでファイル名の一覧を取得する」参照)。

操作方法

指定した(実行)ファイルを検索する

 whereコマンドの使い方は、「where /?」で表示される。

C:\>where /? ……ヘルプの表示

WHERE [/R ディレクトリ] [/Q] [/F] [/T] パターン...

説明:
    検索パターンに一致するファイルの場所を表示します。
    既定では、現在のディレクトリおよび PATH 環境変数によって指定された
    パス内を検索します。

パラメータ一覧:
    /R       指定したパターンに一致するファイルを、指定したディレクトリから
             開始して再帰的に検索し表示します。
……(以下省略)……

 一番簡単な使い方は、見つけたいファイル名やコマンド名を引数に指定してwhereを実行することである。デフォルトではカレント・フォルダと環境変数PATHの指す各フォルダが検索対象となっているので、例えば「where notepad」とすれば、メモ帳の実行ファイル(notepad.exe)を検索して、それが存在するパスを表示する。複数存在する場合は、すべて表示されるし、ワイルドカードを使うと、該当するファイルがすべて列挙される。デフォルトでは実行ファイルの拡張子(環境変数PATHEXTに登録されている)が自動的に補われてファイルが検索されるので、結局これは実行ファイルを検索するコマンドとして利用できる(実際には最初に見つかったものが実行されることになる)。

C:\>where notepad ……メモ帳(notepad)を検索する
C:\Windows\System32\notepad.exe ……2つ見つかった
C:\Windows\notepad.exe

C:\>where *.vbs ……スクリプト・コマンドを検索してみる
C:\Windows\System32\gatherWiredInfo.vbs ……3つ見つかった
C:\Windows\System32\slmgr.vbs
C:\Windows\System32\winrm.vbs

C:\>where notepad.com ……notepad.comを検索してみる
情報: 与えられたパターンのファイルが見つかりませんでした。 ……存在しなかった

汎用のファイル検索ツールとして利用する

 whereで検索できるものは実行ファイルだけに限らない。指定されたパターンに一致するファイルがすべて表示されるので、単なるファイル検索コマンドとしても利用できる。デフォルトではカレント・フォルダのみが検索対象だが、「/r <パス>」オプションを先頭に付けると、指定されたパス以下が検索対象になる。

C:\>where /r d:\work *.txt ……*.txtファイルを検索する
d:\work\utility-readme.txt
d:\work\cpuz\cpuz-readme.txt
……(以下省略)……

 「/f」オプションを付けると、結果のパス名全体が引用符で囲まれるし(空白文字を含むようなパス名の場合に有用)、「/t」オプションを付けるとファイルのサイズと最終変更日付が同時に表示される。

C:\>where /r d:\work /f *.txt ……結果を引用符で囲む
"d:\work\utility-readme.txt"
"d:\work\cpuz\cpuz-readme.txt"
……(以下省略)……

C:\>where /t /r d:\work /f *.txt ……日付を表示させる
      1215   2009/01/19      13:46:54"d:\work\utility-readme.txt"
     14957   2009/04/01      18:46:03  "d:\work\cpuz\cpuz-readme.txt"
……(以下省略)……

パターンを使った、検索パスの複数指定

 特定の検索パス・パターンを指定して、そのパスの中から(実行)ファイルだけを検索することもできる。上の「/r」オプションと似ているが、/rでは指定されたパス以下が再帰的にすべて検索されるのに対し、このパターンを使った方法では、指定されたパスだけが検索対象となる(パスは同時に複数指定可能)。また自動的にPATHEXT環境変数に基づいて拡張子が補われるので、任意の場所にある(主に)実行ファイルを検索するために利用できる。検索パス・パターンとしては、「$変数名:検索対象」「パス:検索対象」が指定できる。前者は指定された環境変数に含まれるパス(複数存在する場合は「:」で区切る)から、検索対象のファイルを検索する。最初に実行した「where notepad」という例は、実は「where $path:notepad」と同じである。また例えば、「where $include:*lib.h」とすれば、環境変数INCLUDEの指している(多数の)パスの中から、*lib.hというインクルード・ファイルだけを検索できる。プログラマなどには便利だろう。

C:\>where notepad ……notepadを検索
C:\Windows\System32\notepad.exe
C:\Windows\notepad.exe

C:\>where $path:notepad ……PATH環境変数中のパスから検索
C:\Windows\System32\notepad.exe ……結果は同じ
C:\Windows\notepad.exe

C:\>where $include:*lib.h ……%INCLUDE%から*lib.hを検索
C:\Program Files\Microsoft Visual Studio 9.0\VC\include\stdlib.h
C:\Program Files\Microsoft SDKs\Windows\v6.0A\Include\CeLib.h
C:\Program Files\Microsoft SDKs\Windows\v6.0A\Include\dbnetlib.h
C:\Program Files\Microsoft SDKs\Windows\v6.0A\Include\perflib.h
……(以下省略)……

 自分でパスを指定する場合は、「パス;パス;……;パス:mycommand」のように、複数のパスを「;」で区切って並べ、最後に「:」を付けて、検索対象のファイル名を指定する。End of Article

C:\>where "d:\work;d:\document:*.txt"
d:\work\memo.txt
d:\work\a.txt
d:\work\aa.txt
……(以下省略)……

この記事と関連性の高い別のWindows TIPS
whichコマンドを作る
実行ファイルの拡張子を追加定義する
dirコマンドでファイル名の一覧を取得する
最近更新されたファイルを特定する方法
これだけは覚えておきたい、コマンド・プロンプトの使い方
このリストは、(株)デジタルアドバンテージが開発した
自動関連記事探索システム Jigsaw(ジグソー) により自動抽出したものです。
generated by

「Windows TIPS」

TechTargetジャパン

Windows Server Insider フォーラム 新着記事

@ITメールマガジン 新着情報やスタッフのコラムがメールで届きます(無料)

RSSフィード

キャリアアップ

- PR -

イベントカレンダー

PickUpイベント

- PR -

アクセスランキング

もっと見る
- PR -

ホワイトペーパーTechTargetジャパン

ソリューションFLASH

「ITmedia マーケティング」新着記事

Amebaユーザーの83%、「選挙に行く予定」だった〜調査データランキング〜
「調査のチカラ」で人気がある調査データを紹介します。「話題注目商品2012」や「主婦の...

米Oracleが米Eloquaを8億7100万ドルで買収
米Oracleはマーケテングツールベンダーの米Eloquaを買収することで、マーケティングソリ...

第1回 スマートデバイスの爆発的な普及とマーケティングの可能性
連載「日本経済を変えるスマートデバイスマーケティング」第1回は、スマートデバイスの市...