Windowsバッチファイルでファイル名の一覧を簡単に作成する方法:【forfiles】コマンド

はじめに

業務で特定のフォルダに格納されているファイルの一覧を作成する必要がありました。何も考えずに進めると、ファイル名を一つずつコピーして、テキストファイルに貼り付ける作業を繰り返すことになります。ファイルが10個程度であれば問題ありませんが、ファイル数が多くなると作業効率が大幅に低下し、ミスも起こりやすくなります。
そのような場合、Windowsforfilesコマンドを使うことで、ファイル一覧の作成を簡単に自動化できます。本記事では、forfilesコマンドを使用して、指定した条件に合致するファイル名の一覧を作成する方法を解説します。


1. forfilesコマンドとは

1.1 基本的な概要と機能

forfilesは、指定したディレクトリ内のファイルを対象に、条件に基づいて操作を行うWindowsのコマンドです。特定の条件に合うファイルを検索し、さらにそのファイルに対して指定した操作を実行できます。

1.2 ファイルを対象にした操作の概要

このコマンドでは、ファイルの拡張子、日付、ファイルサイズなどの条件を指定してフィルタリングが可能です。たとえば、指定した日付に変更されたファイルや、特定の拡張子を持つファイルのみをリストアップすることができます。


2. バッチファイルでファイル名を一覧化する方法

2.1 forfilesを使ったファイル名の取得方法

まず、forfilesを使用してファイル名を取得する基本的な使い方を見てみましょう。次のコマンドを使用すると、指定フォルダ内のすべてのファイル名が表示されます。

forfiles /p "C:\フォルダのパス" /c "cmd /c echo @file"

このコマンドは、指定されたフォルダ内のすべてのファイル名をリストとして表示します。

  • /p "C:\フォルダのパス": 操作対象のフォルダを指定します。
  • /c "cmd /c echo @file": 各ファイルに対して実行するコマンドを指定します。ここでは、ファイル名を表示するためにecho @fileを使っています。
2.2 ファイル名の一覧をテキストファイルに保存する方法

取得したファイル名をテキストファイルに保存したい場合、次のコマンドを使用します。

forfiles /p "C:\フォルダのパス" /c "cmd /c echo @file" > filelist.txt

このコマンドを実行すると、指定フォルダ内のファイル名がfilelist.txtに保存されます。


3. 応用例:特定条件のファイルだけを抽出する

3.1 拡張子によるファイルのフィルタリング

特定の拡張子を持つファイルのみを一覧化したい場合は、次のようなコマンドを使用します。

forfiles /p "C:\フォルダのパス" /m "*.txt" /c "cmd /c echo @file"
  • /m "*.txt": 拡張子.txtを持つファイルのみを対象にします。
3.2 日付の条件を追加してファイルを抽出する

日付の条件を追加することも可能です。たとえば、7日以上前に更新されたファイルのみを対象にしたい場合は、次のコマンドを使用します。

forfiles /p "C:\フォルダのパス" /d -7 /c "cmd /c echo @file"
  • /d -7: 7日以上前に更新されたファイルを対象とします。
3.3 ファイルサイズの条件を追加してファイルを抽出する

特定のサイズ以上または以下のファイルを抽出することも可能です。たとえば、ファイルサイズが1MBより大きいファイルのみを抽出したい場合は、次のようにします。

forfiles /p "C:\フォルダのパス" /c "cmd /c if @fsize gtr 1000000 echo @file"
  • @fsize: ファイルサイズをバイト単位で取得します。
  • 1000000: 1MB をバイト単位に換算した数値です。
  • gtr: 「greater than(~より大きい)」を意味する比較演算子です。

このコマンドを使うことで、指定フォルダ内の1MBより大きいファイルのみを抽出し、そのファイル名を表示します。


まとめ

forfilesコマンドを使えば、バッチファイルで効率よく特定の条件に合致するファイル名を取得し、一覧化することが可能です。これにより、手動で行っていた作業が自動化され、作業効率が向上します。業務の中でこの機能を活用し、効率的にファイルを管理していきましょう。

別記事でも業務に役立つバッチの活用方法を紹介しています。

reisaikigyo.hatenablog.com

reisaikigyo.hatenablog.com

reisaikigyo.hatenablog.com