1.直接看腳本在win2008測試可用
::clean logs @echo off title clean up logs ::delete logs FORFILES /P "D:\Logs" /S /M *.log* /D -7 /C "cmd /c echo deleting..@file.. &del @file" pause
2.列出幾個參考吧,forfiles的版本不一致會導致很多不一樣的問題
forfiles:
/p 指定的路徑
/s 包括子目錄
/m 查找的文件名掩碼
/d 指定日期,有絕對日期和相對日期, 此處-7指當前日期 的7天前
/c 運行的命令行 表示為每個文件執行的命令。命令字符串應該
用雙引號括起來。
默認命令是 "cmd /c echo @file"。下列變量
可以用在命令字符串中:
@file - 返回文件名。
@fname - 返回不帶擴展名的文件名。
@ext - 只返回文件的擴展。
@path - 返回文件的完整路徑。
@relpath - 返回文件的相對路徑。
@isdir - 如果文件類型是目錄,返回 "TRUE";
如果是文件,返回 "FALSE"。
@fsize - 以字節為單位返回文件大小。
@fdate - 返回文件上一次修改的日期。
@ftime - 返回文件上一次修改的時間。
示例
要列出驅動器 C: 上的所有批處理文件,請鍵入:
forfiles /p c:\ /s /m*.bat /c"cmd /c echo @file is a batch file"
要列出驅動器 C: 上的所有目錄,請鍵入:
forfiles /p c:\ /s /m*.* /c"cmd /c if @isdir==true echo @file is a directory"
要列出驅動器 C: 上存在時間多於 100 天的所有文件,請鍵入:
forfiles /p c:\ /s /m*.* /dt-100 /c"cmd /c echo @file :date >= 100 days"
要列出驅動器 C: 上 1993 年 1 月 1 日以前創建的所有文件,而且對於日期早於 1993 年 1 月 1 日的文件顯示“file is quite old!”,請鍵入:
forfiles /p c:\ /s /m*.* /dt-01011993 /c"cmd /c echo @file is quite old!"
要按列格式列出驅動器 C: 上所有文件的擴展名,請鍵入:
forfiles /p c:\ /s /m*.* /c "cmd /c echo extension of @file is 0x09@ext0x09" With:
要列出驅動器 C: 上的所有批處理文件,請鍵入:
forfiles /p c:\ /s /m *.bat /c "cmd /c echo @file is a batch file"
要列出驅動器 C: 上的所有目錄,請鍵入:
forfiles /p c:\ /s /m *.* /c "cmd /c if @isdir==true echo @file is a directory"
要列出驅動器 C: 上存在時間多於 100 天的所有文件,請鍵入:
forfiles /p c:\ /s /m *.* /d t-100 /c "cmd /c echo @file :date >= 100 days"
要列出驅動器 C: 上 1993 年 1 月 1 日以前創建的所有文件,而且對於日期早於 1993 年 1 月 1 日的文件顯示“file is quite old!”,請鍵入:
forfiles /p c:\ /s /m *.* /d t-01011993 /c "cmd /c echo @file is quite old!"
要按列格式列出驅動器 C: 上所有文件的擴展名,請鍵入:
forfiles /p c:\ /s /m*.* /c "cmd /c echo extension of @file is 0x09@ext0x09"