Forfilesを使用して、年齢に基づいてファイルを処理する

コマンドをそのように処理する方が簡単な場合があるため、コマンドラインの魔法を知っていることは常に良いことです。

このガイドは、Windows VistaおよびWindows 7のForfilesコマンドを示しています(更新:Windowsの新しいバージョンでも利用可能)。

Forfilesは、名前、ファイル拡張子、および年齢に基づいてファイルを処理できます。 たとえば、20日以上前のディレクトリ内のすべてのドキュメント、または特定の日付以降に変更されたc:\ documents内のすべてのドキュメントを検索できます。

forfilesコマンドを処理オプションと組み合わせて、これらのファイルを削除したり、フィルターに一致するすべてのファイルのリストを作成したりできます。 forfilesコマンドを詳しく見てみましょう。

FORFILES [/ Pパス名] [/ Mサーチマスク] [/ S] [/ Cコマンド] [/ D [+ | -] dd / MM / yyyy]

説明:ファイル(またはファイルのセット)を選択し、そのファイルに対してコマンドを実行します。 これはバッチジョブに役立ちます。

パラメータリスト:

  • / Pパス名検索を開始するパスを示します。 デフォルトのフォルダは現在の作業ディレクトリ(。)です。
  • / M searchmask検索マスクに従ってファイルを検索します。 デフォルトの検索マスクは '*'です。
  • / S forfilesにサブディレクトリに再帰するよう指示します。 「DIR / S」のように。
  • / Cコマンド各ファイルに対して実行するコマンドを示します。 コマンド文字列は二重引用符で囲む必要があります。 デフォルトのコマンドは「cmd / c echo @file」です。

コマンド文字列では次の変数を使用できます。

  • @file-ファイルの名前を返します。
  • @fname-拡張子なしのファイル名を返します。
  • @ext-ファイルの拡張子のみを返します。
  • @path-ファイルのフルパスを返します。
  • @relpath-ファイルの相対パスを返します。
  • @isdir-ファイルタイプがディレクトリの場合は「TRUE」、ファイルの場合は「FALSE」を返します。
  • @fsize-ファイルのサイズをバイト単位で返します。
  • @fdate-ファイルの最終変更日を返します。
  • @ftime-ファイルの最終変更時刻を返します。

コマンドラインに特殊文字を含めるには、0xHH形式の文字に16進コードを使用します(例:タブの場合は0x09)。 内部CMD.exeコマンドの前に「cmd / c」を付ける必要があります。

/ D date「dd / MM / yyyy」形式を使用して、指定された日付以上(+)、または以下(-)の最終変更日付を持つファイルを選択します。 または、最終変更日が(+)現在の日付に「dd」日以上、または(-)現在の日付から「dd」日以下のファイルを選択します。 有効な「dd」日数は、0〜32768の範囲の任意の数値です。指定しない場合、「+」がデフォルトの記号として使用されます。

/? このヘルプメッセージを表示します。 このヘルプファイルは、コマンドforfiles /?を入力して開くことができます。 コマンドプロンプトで。 Windows-Rを押し、cmdと入力し、Enterを押してWindowsでコマンドラインを起動します。

forfiles /P c:\test\ /M .doc /S /D -10のコマンドは、ディレクトリc:\ testおよびそのすべてのサブディレクトリで、10日以上前の.doc拡張子を持つファイルを検索します。

パラメータ/ pに続くディレクトリは開始ディレクトリを定義し、/ sは検索にサブディレクトリを含み、/ mは入力された文字列に基づいてファイルとフォルダをフィルタし、/ Dは日付または期間を定義します。

/ Cコマンドは、さらに検出されたファイルを処理するために使用されます。 たとえば、次のコマンドを実行するために使用できます/C "cmd /c echo @fname" > test.txt見つかった各ファイルの名前をエコーし​​、同じディレクトリのtext.txtに結果を保存します。

完全なコマンドは次のようになりますforfiles /P c:\test\ /M .doc /S /D -10 /C "cmd /c echo @fname" > test.txt

別の可能性は、検索に一致するファイルを削除することです。これは、コマンド/C "cmd /c del @Fileして行われ/C "cmd /c del @File

ただし、deleteコマンドを発行して適切なファイルのみが削除されることを確認する前に、最初に出力をテストすることをお勧めします。 経験豊富なユーザーは、forfilesを定期的に実行するバッチファイルを作成できます。