Windowsコマンドプロンプトで特定の文字列を含むファイル名を検索する方法

ファイル管理が煩雑になると、特定のファイルを素早く見つけることが難しくなります。Windowsのコマンドプロンプトを使用すると、特定の文字列を含むファイル名を効率的に検索できます。本記事では、コマンドプロンプトの基本操作から始めて、具体的な検索方法、応用テクニックまで詳しく解説します。

まず使う例:コマンドプロンプト(cmd.exe)で dir /S /B /A:-D "C:\対象フォルダー\*report*" と入力すると、配下からreportを含むファイル名を一覧にできます。C:\対象フォルダーは実在する検索先に置き換えてください。本文中の文字を探すコマンドではなく、ファイル名の検索です。PowerShellのdirは別コマンドの別名なので、以下のオプションをそのまま使わないでください。

目次

コマンドプロンプトの基本操作

コマンドプロンプトはWindowsの強力なツールであり、ファイル検索など多くの操作を効率的に行うことができます。以下に、コマンドプロンプトの基本的な操作方法を説明します。

コマンドプロンプトの開き方

  1. スタートメニューから開く: 「スタート」ボタンをクリックし、「cmd」または「コマンドプロンプト」と入力し、エンタキーを押します。
  2. ショートカットキーを使う: 「Windowsキー + R」を押し、「cmd」と入力してエンタキーを押します。

基本的なコマンドの入力方法

コマンドプロンプトが開いたら、コマンドを入力してエンタキーを押すことで、指示された操作が実行されます。例えば、「dir」コマンドを入力すると、現在のディレクトリ内のファイルとフォルダの一覧が表示されます。

ディレクトリの移動

ディレクトリを移動するには、「cd」コマンドを使用します。

cd /d ディレクトリパス

例えば、Cドライブの「Documents」フォルダに移動する場合:

cd /d "C:\Users\あなたのユーザー名\Documents"

これで、コマンドプロンプトの基本操作を理解しました。次は、具体的なファイル検索方法について説明します。

dirコマンドの使い方

dirコマンドは、指定したディレクトリ内のファイルやフォルダの一覧を表示するために使用される基本的なコマンドです。ここでは、dirコマンドの基本的な使い方を説明します。

基本的なdirコマンドの使用方法

dirコマンドを入力することで、現在のディレクトリ内のファイルやフォルダの一覧が表示されます。

dir

このコマンドを実行すると、ファイル名、サイズ、更新日時などの情報が一覧表示されます。

特定の文字列を含むファイル名を検索する

dirコマンドにフィルタを追加することで、特定の文字列を含むファイル名を検索できます。例えば、”test”という文字列を含むファイル名を検索する場合、以下のコマンドを使用します。

dir /A:-D *test*

このコマンドを実行すると、ファイル名に”test”が含まれるすべてのファイルが表示されます。

検索結果のオプション

dirコマンドには、検索結果をさらに詳細に制御するためのいくつかのオプションがあります。例えば、サブディレクトリも含めて検索する場合、以下のようにオプションを追加します。

dir /A:-D /S *test*

/Sオプションを使用することで、指定したディレクトリ内だけでなく、そのすべてのサブディレクトリ内のファイルも検索対象になります。

dirコマンドの基本的な使い方を理解したところで、次はフィルタリングオプションの活用方法について説明します。

フィルタリングオプションの活用

dirコマンドには、検索結果をより詳細に制御するためのフィルタリングオプションが用意されています。ここでは、フィルタリングオプションを活用して、特定の文字列を含むファイルを効率的に検索する方法を紹介します。

ファイルの拡張子を指定して検索

特定の拡張子を持つファイルだけを検索するには、ファイル名の後に拡張子を指定します。例えば、”log”という文字列を含むすべてのテキストファイルを検索する場合、以下のコマンドを使用します。

dir /A:-D *log*.txt

名前に”log”が含まれる.txt候補を表示します。dirのワイルドカードには短いファイル名との照合による例外があるため、厳密に拡張子を限定する場合は表示された実名も確認します。

特定の属性を持つファイルを検索

特定の属性(例えば隠しファイルやシステムファイル)を持つファイルを検索するには、/Aオプションを使用します。例えば、隠し属性を持つ項目だけを検索する場合、以下のコマンドを使用します。

dir /A:H-D *log*

/A:Hは隠し属性のファイルだけに絞ります。通常・隠し・システムを含むファイルだけを一覧にするには /A:-D を使い、フォルダーは除外します。

検索結果を並べ替える

検索結果をファイルサイズや日付で並べ替えるには、/Oオプションを使用します。例えば、ファイルサイズで昇順に並べ替える場合、以下のコマンドを使用します。

dir /A:-D /O:S *log*

/O:Sオプションを使用することで、ファイルサイズ順に並べ替えられた検索結果が表示されます。

検索結果をファイルに保存

検索結果を後で確認するためにファイルに保存するには、リダイレクト機能を使用します。例えば、検索結果をresults.txtというファイルに保存する場合、以下のコマンドを使用します。

dir /A:-D *log* > results.txt

これにより、検索結果がresults.txtファイルに出力されます。

フィルタリングオプションを活用することで、より効率的に目的のファイルを見つけることができます。次は、特定のディレクトリでの検索方法について説明します。

特定のディレクトリで検索

特定のディレクトリ内で文字列を含むファイルを検索する方法を説明します。dirコマンドを使用して、特定のディレクトリ内のファイルを効率的に検索する方法を見ていきましょう。

ディレクトリを指定して検索

dirコマンドにディレクトリパスを指定することで、そのディレクトリ内のファイルを検索することができます。例えば、Cドライブの「Documents」フォルダ内で”report”という文字列を含むファイルを検索する場合、以下のコマンドを使用します。

dir /A:-D "C:\Users\あなたのユーザー名\Documents\*report*"

このコマンドを実行すると、「Documents」フォルダ内の”report”を含むファイルが表示されます。

相対パスを使用した検索

現在のディレクトリから相対的に指定したディレクトリ内で検索を行うことも可能です。例えば、現在のディレクトリが「C:\Users\あなたのユーザー名」で、「Documents」フォルダ内を検索したい場合は、以下のように相対パスを使用します。

dir /A:-D Documents\*report*

このコマンドを実行すると、「Documents」フォルダ内の”report”を含むファイルが表示されます。

複数のディレクトリを一度に検索

複数のディレクトリを一度に検索する場合、ディレクトリごとに個別にdirコマンドを実行します。例えば、「Documents」と「Downloads」フォルダ内で検索する場合は、以下のように入力します。

dir /A:-D "C:\Users\あなたのユーザー名\Documents\*report*"
dir /A:-D "C:\Users\あなたのユーザー名\Downloads\*report*"

これにより、両方のフォルダ内で”report”を含むファイルがそれぞれ検索されます。

配下のフォルダーを検索するには/Sを使う

途中のフォルダー名に * を置いて階層検索するのではなく、検索元フォルダーを指定して /S を使います。

dir /A:-D "C:\Users\あなたのユーザー名\Documents\*report*" /S

これにより、「Documents」フォルダ内のすべてのサブフォルダ内で”report”を含むファイルが検索されます。

特定のディレクトリ内での検索方法を理解したところで、次はサブディレクトリを含めた検索方法について説明します。

サブディレクトリを含めた検索

サブディレクトリ内も含めてファイルを検索するためのオプション設定について解説します。dirコマンドを使用することで、指定したディレクトリ以下のすべてのサブディレクトリを対象に検索を行うことができます。

サブディレクトリを含む検索

dirコマンドに/Sオプションを追加すると、指定したディレクトリ以下のすべてのサブディレクトリ内のファイルも検索対象に含まれます。例えば、「Documents」フォルダ以下のすべてのフォルダ内で”report”という文字列を含むファイルを検索する場合、以下のコマンドを使用します。

dir /A:-D "C:\Users\あなたのユーザー名\Documents\*report*" /S

このコマンドを実行すると、「Documents」フォルダ内のすべてのサブディレクトリ内で”report”を含むファイルが検索されます。

特定の拡張子を持つファイルをサブディレクトリ内で検索

特定の拡張子を持つファイルをサブディレクトリ内で検索することも可能です。例えば、すべてのサブディレクトリ内のテキストファイル(.txt)を検索する場合、以下のコマンドを使用します。

dir /A:-D "C:\Users\あなたのユーザー名\Documents\*.txt" /S

このコマンドを実行すると、「Documents」フォルダ以下のすべてのサブディレクトリ内の.txtファイルが表示されます。

検索結果の詳細表示

検索結果の詳細を表示するためには、/Sオプションに加えて/Qオプションを使用します。例えば、ファイルの所有者情報も含めて表示したい場合、以下のコマンドを使用します。

dir /A:-D "C:\Users\あなたのユーザー名\Documents\*report*" /S /Q

/Qオプションを追加することで、各ファイルの所有者情報が表示されます。

検索結果をファイルに保存する

サブディレクトリを含めた検索結果をファイルに保存するには、リダイレクト機能を使用します。例えば、検索結果をresults.txtというファイルに保存する場合、以下のコマンドを使用します。

dir /A:-D "C:\Users\あなたのユーザー名\Documents\*report*" /S > results.txt

これにより、検索結果がresults.txtファイルに出力され、後で確認することができます。

サブディレクトリを含めた検索方法を理解したところで、次は検索結果の出力を整理する方法について説明します。

検索結果の出力を整理する

検索結果を見やすく整理するためのテクニックを紹介します。dirコマンドには、検索結果を整形するためのいくつかのオプションがあり、これを活用することで効率的に目的のファイルを見つけることができます。

検索結果の並べ替え

dirコマンドには、検索結果をさまざまな基準で並べ替えるためのオプションがあります。例えば、ファイル名で並べ替えるには/O:Nオプションを使用します。

dir /A:-D "C:\Users\あなたのユーザー名\Documents\*report*" /O:N

これにより、ファイル名のアルファベット順に並べ替えられた結果が表示されます。

出力形式の変更

検索結果の出力形式を変更することで、必要な情報のみを表示することができます。/Bオプションを使用すると、ファイル名のみが表示されます。

dir /A:-D "C:\Users\あなたのユーザー名\Documents\*report*" /B

これにより、ファイル名のみが表示され、検索結果がシンプルになります。

検索結果のフィルタリング

検索結果をさらに絞り込むために、findstrコマンドを併用することができます。例えば、検索結果から特定の文字列を含む行のみを表示するには以下のようにします。

dir /A:-D "C:\Users\あなたのユーザー名\Documents\*.*" /S /B | findstr /I /L /C:"report"

この例はフルパス全体から”report”を含む行を抽出します。親フォルダー名にreportがある場合も一致するため、ファイル名だけを検索する用途ではdirの *report* を使ってください。

検索結果を表形式で表示

検索結果を表形式で表示することで、情報を見やすく整理できます。/Wオプションを使用すると、検索結果がワイドリスト形式で表示されます。

dir /A:-D "C:\Users\あなたのユーザー名\Documents\*report*" /W

これにより、検索結果が横並びの表形式で表示されます。

出力をファイルに保存して整理する

検索結果をファイルに保存し、後で必要な情報を整理することもできます。以下のコマンドを使用して、検索結果をresults.txtというファイルに保存します。

dir /A:-D "C:\Users\あなたのユーザー名\Documents\*report*" /S /B > results.txt

これにより、検索結果がresults.txtファイルに保存されます。テキストエディタでファイルを開き、必要な情報を整理することができます。

これで、検索結果を見やすく整理するためのテクニックを理解しました。次は、バッチファイルを使った自動検索方法について説明します。

バッチファイルを使った自動検索

バッチファイルを作成し、自動的に特定の文字列を含むファイルを検索する方法を説明します。バッチファイルを使用すると、繰り返し行うコマンド操作を自動化し、効率的に作業を進めることができます。

バッチファイルの作成方法

バッチファイルは、実行したいコマンドをテキストファイルに書き込み、拡張子を.batに変更することで作成できます。以下は、”report”という文字列を含むファイルを検索するバッチファイルの例です。

  1. テキストエディタを開き、以下の内容を入力します。
@echo off
dir /A:-D "C:\Users\あなたのユーザー名\Documents\*report*" /S /B
pause
  1. ファイルを「search_report.bat」という名前で保存します。

バッチファイルの実行方法

作成したバッチファイルをダブルクリックすることで、バッチファイル内のコマンドが実行されます。以下の手順で実行します。

  1. 保存した「search_report.bat」ファイルを探します。
  2. ファイルをダブルクリックします。
  3. コマンドプロンプトが開き、指定したディレクトリ内の”report”を含むファイルが検索され、結果が表示されます。

スケジュールタスクでの自動実行

定期的にバッチファイルを実行したい場合は、Windowsのタスクスケジューラを使用することで、自動的に実行することができます。以下の手順で設定します。

  1. タスクスケジューラを開く: 「スタート」ボタンをクリックし、「タスクスケジューラ」と入力してエンタキーを押します。
  2. 基本タスクの作成: 「基本タスクの作成」をクリックし、名前と説明を入力します。
  3. トリガーの設定: 「毎日」「毎週」「毎月」など、実行頻度を設定します。
  4. 操作の設定: 「プログラムの開始」を選択し、作成したバッチファイル「search_report.bat」を指定します。
  5. 設定の確認と完了: 設定内容を確認し、「完了」をクリックします。

これで、指定したスケジュールに従ってバッチファイルが自動的に実行され、定期的に”report”を含むファイルが検索されます。

バッチファイルの応用例

複数のディレクトリを検索したり、検索結果を別のファイルに保存するような複雑なバッチファイルを作成することも可能です。以下は、複数のディレクトリを検索し、結果をresults.txtに保存する例です。

@echo off
dir /A:-D "C:\Users\あなたのユーザー名\Documents\*report*" /S /B > results.txt
dir /A:-D "C:\Users\あなたのユーザー名\Downloads\*report*" /S /B >> results.txt
pause

このように、バッチファイルを使えば、手間のかかる検索作業を自動化し、効率的に行うことができます。次は、複数条件での検索方法について説明します。

応用例:複数条件での検索

複数の条件を組み合わせた高度な検索方法を実例を交えて紹介します。これにより、より精密なファイル検索が可能になります。

複数の文字列を含むファイルの検索

複数の文字列を含むファイルを検索する場合、findstrコマンドを併用します。次の例は、名前に”report”を含む候補のフルパスから、さらに”log”を含む行を選びます。logは親フォルダー名への一致も含むため、名前だけのAND条件ではありません。

dir /A:-D /S /B *report* | findstr /I /L /C:"log"

このコマンドでは、まず”report”を含むすべてのファイルを検索し、その結果から”log”を含むファイルをフィルタリングします。

特定の拡張子と文字列を組み合わせた検索

特定の拡張子と文字列を組み合わせて検索することもできます。例えば、”report”を含むテキストファイル(.txt)を検索する場合、以下のコマンドを使用します。

dir /S /B /A:-D "*report*.txt"

この例は名前にreportを含む.txt候補を配下から一覧にします。ファイルの本文を読む検索ではありません。

複数ディレクトリを対象にした検索

複数のディレクトリを同時に検索し、それぞれの結果をまとめることができます。例えば、「Documents」と「Downloads」フォルダ内の”report”を含むファイルを検索する場合、以下のコマンドを使用します。

dir /A:-D /S /B "C:\Users\あなたのユーザー名\Documents\*report*"
dir /A:-D /S /B "C:\Users\あなたのユーザー名\Downloads\*report*"

このコマンドを実行すると、両方のフォルダ内の”report”を含むファイルが表示されます。

日付やサイズを基準にした検索

検索結果を日付やサイズで絞り込むことも可能です。例えば、30日以上前に更新された”report”を含むファイルを検索する場合、以下のコマンドを使用します。

forfiles /P "C:\Users\あなたのユーザー名\Documents" /S /M *report* /D -30 /C "cmd /c if @isdir==FALSE echo @path"

このコマンドは、30日以上前に更新された”report”を含むファイルを検索します。

複数条件を組み合わせたバッチファイル

複数の条件を組み合わせた検索を自動化するバッチファイルを作成することもできます。以下は、特定の文字列と日付範囲を組み合わせて検索するバッチファイルの例です。

@echo off
forfiles /P "C:\Users\あなたのユーザー名\Documents" /S /M *report* /D -30 /C "cmd /c if @isdir==FALSE echo @path" | findstr /I /L /C:"log" > results.txt
pause

このバッチは名前にreportを含み30日以上前に更新されたファイルを選び、フルパスにlogを含む行を保存します。logは親フォルダー名にも一致します。

複数条件での検索方法を理解することで、より高度なファイル管理と検索が可能になります。次は、検索中によくある問題とその解決法について説明します。

よくある問題とその解決法

検索中に発生する可能性のある問題と、その解決方法について説明します。dirコマンドやfindstrコマンドを使用する際に直面する一般的な問題を解決するためのヒントを提供します。

問題1: ファイルが見つからない

検索条件が適切に設定されているにもかかわらず、ファイルが見つからない場合があります。考えられる原因と対策を以下に示します。

原因: 検索パスの設定ミス

指定したディレクトリパスが間違っている場合、正しい結果が得られません。

dir /A:-D C:\InvalidPath\*report* /S

対策: パスの確認

検索対象のディレクトリパスが正しいことを確認してください。例えば、「Documents」フォルダ内を検索する場合、以下のように正しいパスを指定します。

dir /A:-D "C:\Users\あなたのユーザー名\Documents\*report*" /S

問題2: 大量の検索結果が表示される

検索結果が多すぎて、必要な情報を見つけるのが難しい場合があります。

原因: フィルタリング不足

検索条件が広すぎると、大量の結果が表示されることがあります。

dir /A:-D "C:\Users\あなたのユーザー名\Documents\*.*" /S

対策: フィルタリングオプションの活用

特定の文字列や拡張子を使用して、検索結果を絞り込みます。

dir /A:-D "C:\Users\あなたのユーザー名\Documents\*report*.txt" /S

問題3: 特殊文字を含むファイル名の検索

ファイル名に特殊文字が含まれている場合、検索が困難になることがあります。

原因: 特殊文字の扱い

特殊文字を正しくエスケープしないと、検索が失敗することがあります。

dir /A:-D "C:\Users\あなたのユーザー名\Documents\*file(name)*" /S

対策: パス全体を二重引用符で囲む

空白や括弧を含むパスは、次のようにパス全体を二重引用符で囲みます。

dir /A:-D "C:\Users\あなたのユーザー名\Documents\*file(name)*" /S

問題4: 権限の問題

特定のディレクトリやファイルにアクセスできない場合があります。

原因: アクセス権限の不足

管理者権限が必要なディレクトリやファイルに対して検索を行うと、アクセスが拒否されることがあります。

dir /A:-D C:\Windows\System32\*report* /S

対策: 閲覧権限と対象パスを確認

まず対象パスと自分の閲覧権限を確認します。必要な権限がないフォルダーは管理者へ確認し、権限変更や所有権取得を検索のために行わないでください。管理者実行だけで全ファイルが読めるわけではありません。

問題5: 大文字小文字の区別

検索条件の文字列が大文字小文字を区別している場合、意図しない結果になることがあります。

原因: 大文字小文字の区別

通常のWindows環境では、dirの名前照合は大文字小文字を区別しません。findstrは既定で区別するため、後段の文字列フィルターでは /I が必要です。

dir /A:-D "C:\Users\あなたのユーザー名\Documents\*Report*" /S

対策: 大文字小文字を区別しないオプションの使用

findstrコマンドを併用し、/Iオプションを使用して大文字小文字を区別せずに検索します。

dir /A:-D /S /B "C:\Users\あなたのユーザー名\Documents\*.*" | findstr /I /L /C:"report"

以上の問題とその解決法を理解することで、dirコマンドを使用したファイル検索をより効果的に行うことができます。次は、今回紹介した方法をまとめます。

まとめ

今回の記事では、Windowsコマンドプロンプトを使用して特定の文字列を含むファイル名を効率的に検索する方法について詳しく説明しました。基本的なdirコマンドの使い方から始め、フィルタリングオプションの活用方法、特定のディレクトリやサブディレクトリを含めた検索方法、検索結果の整理方法、バッチファイルを使った自動検索、そして複数条件での検索方法とよくある問題の解決法まで幅広くカバーしました。

これらのテクニックを活用することで、ファイル検索の効率が飛躍的に向上し、日々の作業がよりスムーズになります。特に、バッチファイルやスケジュールタスクを活用することで、定期的な検索作業を自動化し、時間と労力を節約することができます。

この記事を参考に、コマンドプロンプトを駆使して、目的のファイルを迅速かつ正確に見つけ出すことができるようになるでしょう。

補足:例の /A:-D はディレクトリを除外し、隠し・システムファイルも対象に含めます。/S /B の結果は1行1フルパスです。> は既存の出力ファイルを上書きし、>> は追記します。保存先は検索対象外のフォルダーに置き、既存ファイルを上書きしない名前を選んでください。自動実行用ではpauseを外し、入力・出力とも絶対パスにして、実行アカウントから検索先が見えることを確認します。

forfiles /D -30 は「30日以内」ではなく「今日から30日前以前の更新日」を選びます。最近のファイルを探す条件と逆なので注意してください。検索結果を確認せず、削除や移動のコマンドへつながないでください。

公式仕様:dir、findstr、forfiles。

この記事を書いた人

実務の現場で詰まりがちなポイントを地図にするITブログ「IT trip」を運営。Windows/Office(Teams・Excel)からSQL、サーバ運用、ガジェットまで、再現性のある手順と“なぜそうなるか”を丁寧に解説します。読んだらすぐ試せること、そして迷った人の次の一歩が見えることを大切にしています。

コメント

コメントする

目次