通過 Forfiles 刪除指定目錄下過期的備份文件
/*-- 用法詳解
D:/>forfiles /?
FORFILES [/P pathname] [/M searchmask] [/S]
[/C command] [/D [+ | -] {yyyy-MM-dd | dd}]
描述 :
選擇一個文件 ( 或一組文件 ) 並在那個文件上
執行一個命令。這有助於批處理作業。
參數列表 :
/P pathname 表示開始搜索的路徑。默認文件夾是當前工作的
目錄 (.) 。
/M searchmask 根據搜索掩碼搜索文件。默認搜索掩碼是 '*' 。
/S 指導 forfiles 遞歸到子目錄。像 "DIR /S" 。
/C command 表示為每個文件執行的命令。命令字符串應該
用雙引號括起來。
默認命令是 "cmd /c echo @file" 。下列變量
可以用在命令字符串中 :
@file - 返回文件名。
@fname - 返回不帶擴展名的文件名。
@ext - 只返回文件的擴展。
@path - 返回文件的完整路徑。
@relpath - 返回文件的相對路徑。
@isdir - 如果文件類型是目錄,返回 "TRUE" ;
如果是文件,返回 "FALSE" 。
@fsize - 以字節為單位返回文件大小。
@fdate - 返回文件上一次修改的日期。
@ftime - 返回文件上一次修改的時間。
要在命令行包括特殊字符,字符請以 0xHH
形式使用十六進制代碼 ( 例如, x09 為 tab) 。
內部 CMD.exe 命令前面應以 "cmd /c" 開始。
/D date 選擇文件,其上一次修改日期大於或等於 (+) ,
或者小於或等於 (-) 用 "yyyy-MM-dd" 格式指定的日期 ;
或選擇文件,其上一次修改日期大於或等於 (+)
當前日期加 "dd" 天,或者小於或等於 (-) 當前
日期減 "dd" 天。有效的 "dd" 天數可以是
0 - 32768 范圍內的任何數字。如果沒有指定,
"+" 被當作默認符號。
/? 顯示幫助消息。
例如 :
FORFILES /?
FORFILES
FORFILES /P C:/WINDOWS /S /M DNS*.*
-- 顯示 C:/WINDOWS 目錄及子目錄下 DNS 開頭的所有文件名
FORFILES /S /M *.txt /C "cmd /c type @file | more"
-- 顯示當前目錄下所有 TXT 文件的內容
FORFILES /P C:/ /S /M *.bat
-- 顯示 C 盤目錄下及子目錄下所有文件后綴名為 bat 的文件名
FORFILES /D -30 /M *.exe
-- 顯示當前目錄下修改日期小於等於天前的 exe 文件名
/C "cmd /c echo @path 0x09 在 30 前就被更改。 "
-- 顯示當前目錄下所有文件的完整路徑並在后面追加 ‘ 在 30 前就被更改 ’ 的文字
FORFILES /D 2001-01-01
-- 顯示當前目錄下修改日期大於等於 -01-01 的文件名 ( 含文件夾名 )
/C "cmd /c echo @fname 在 2001 年月日就是新的。 "
-- 顯示當前目錄下所有文件名並在后面追加 ‘ 在 30 前就被更改 ’ 的文字
FORFILES /D +2009-8-18 /C "cmd /c echo @fname 今天是新的。 "
-- 顯示當前目錄下修改日期大於等於 -8-18 的文件名並在后面追加 ‘ 今天是新的 ’ 的文字
FORFILES /M *.exe /D +1
-- 顯示當前目錄下修改日期大於等於明天的 exe 文件名
FORFILES /S /M *.doc /C "cmd /c echo @fname @fsize"
-- 顯示當前目錄及子目錄下所有 doc 文件的文件名和文件大小
FORFILES /M *.txt /C "cmd /c if @isdir==FALSE notepad.exe @file"
-- 打開當前目錄下 txt 文件,不含子文件。 ( 注意變量 isdir 后面的 FALSE 必須為大寫 )
*/
目的:刪除目錄 i: /sqldataup 中天前的 . bak 文件:
步驟:
1 、定義 FORFILES 批處理腳本如下:
C: /> FORFILES / P i: /sqldataup / M *. bak / C "cmd /C del /Q @path" / d - 5
如果執行成功則返回當前盤符 C: /> 。
-- 如果沒有需要刪除的文件則返回信息錯誤 : 用指定的搜索標准沒有找到文件。比如:
--C:/>FORFILES /P i:/sqldataup /M *.bak /C "cmd /C del /Q @path" /d -5
-- 錯誤 : 用指定的搜索標准沒有找到文件。