状態:-
閲覧数:3,111
投稿日:2018-05-12
更新日:2018-05-12
f
Windowsで特定の条件のファイルを検索するコマンド「forfiles」
/P
パス
・検索するパス名を指定
・未指定の時はカレントディレクトリ
構文
forfiles /P "パス"
作成例
forfiles /P "L:\2_Hp_data\bat_chrome_bookmark_backup"
/D
最終更新日以降 (+)、またはそれ以前 (-)
構文
forfiles /D 日付
作成例
forfiles /D -3
/C
コマンド
・実行行するコマンドを指定
・未指定の時は「cmd /c echo @file」。つまり、ファイル名を画面に表示する
構文
forfiles /C "コマンド"
作成例
forfiles /C "cmd /c if @isdir==TRUE rd /s /q @path"
ヘルプ
forfiles /?
FORFILES [/P パス名] [/M 検索マスク] [/S]
[/C コマンド] [/D [+ | -] {yyyy/MM/dd | dd}]
説明:
ファイル (または、ファイルのセット) を選んで、そのファイル上の
コマンドを実行します。これはバッチ ジョブの使用に便利です。
パラメーター一覧:
/P パス名 検索を開始するパスを示します。
既定のフォルダーは現在実行中の
ディレクトリ (.) です。
/M 検索マスク 検索マスクによってファイルを検索します。
既定の検索マスクは '*' です。
/S サブディレクトリに対しても処理を行うように forfiles に
指示します (例: "DIR /S")。
/C コマンド 各ファイルの実行するコマンドを示します。
コマンドの文字列は二重引用符で囲んでくだ
さい。
既定のコマンドは "cmd /c echo @file" です。
次の変数をコマンドの文字列に使用することができ
ます:
@file - フィルの名前を返します。
@fname - 拡張子なしのファイル名を
返します。
@ext - ファイルの拡張子だけを返し
ます。
@path - ファイルの完全なパスを返します。
@relpath - ファイルの相対パスを返し
ます。
@isdir - ファイルの種類がディレクトリの場合
は "TRUE"を、ファイルの場合は
"FALSE" を返します。
@fsize - ファイルのサイズをバイトで返し
ます。
@fdate - ファイルの最終更新日を返し
ます。
@ftime - ファイルの最終更新時刻を返し
ます。
コマンド ラインに特殊文字を使用する場合は、
文字を 16 進数コードで 0xHH 形式で (例:
タブは 0x09) 指定してください。CMD.EXE の
内部コマンドの前には "cmd /c" が必要
です。
/D 日付 最終更新日が指定された日かもしくはそれ
以降 (+)、または指定された日またはそれ
以前 (-) であるファイルを "yyyy/MM/dd" 形式を使っ
て選択します。または、最終更新日が現在
の日にちより "dd" 日あと、もしくは "dd" 日
前であるファイルを選択します。有効な "dd"
値は 0 から 32768 の間です。
指定がない場合は、"+" が既定で使用さ
れます。
/? ヘルプまたは使用法を表示します。
例:
FORFILES /?
FORFILES
FORFILES /P C:\WINDOWS /S /M DNS*.*
FORFILES /S /M *.txt /C "cmd /c type @file | more"
FORFILES /P C:\ /S /M *.bat
FORFILES /D -30 /M *.exe
/C "cmd /c echo @path 0x09 was changed 30 days ago"
FORFILES /D 2001/01/01
/C "cmd /c echo @fname is new since Jan 1st 2001"
FORFILES /D +2018/5/4 /C "cmd /c echo @fname is new today"
FORFILES /M *.exe /D +1
FORFILES /S /M *.doc /C "cmd /c echo @fsize"
FORFILES /M *.txt /C "cmd /c if @isdir==FALSE notepad.exe @file"
カレントフォルダにある指定日以前の指定拡張子ファイルを削除
カレントフォルダにある指定日数以前の指定拡張子ファイルを削除するバッチファイル
構文
カレントフォルダにある指定日数以前の指定拡張子ファイルを削除するバッチファイル
@echo off
set day=削除対象は何日前か
set ext= 削除するファイルの拡張子
forfiles /M *.%ext% /D -%day% /C "cmd /c del @file
set day=削除対象は何日前か
set ext= 削除するファイルの拡張子
forfiles /M *.%ext% /D -%day% /C "cmd /c del @file
具体例
カレントフォルダにある90日以前のpng画像ファイルを削除
@echo off
set day=90
set ext= png
forfiles /M *.%ext% /D -%day% /C "cmd /c del @file
set day=90
set ext= png
forfiles /M *.%ext% /D -%day% /C "cmd /c del @file