需求:
刪除15天前的日志文件夾或文件,文件夾以日期命名,如:20180101
set log_dir="C:\inetpub\logs\LogFiles"
:: 保留日志天數
set bak_dat=15
:: 刪除日志文件。解釋:刪除C:\inetpub\logs\LogFiles目錄下以.log結尾的15天前的文件
forfiles /p %log_dir% /M "*.log" /D -%bak_dat% /C "cmd /c del @file"
:: 刪除日志文件夾。解釋:刪除C:\inetpub\logs\LogFiles目錄下以20開頭的15天前的文件夾
forfiles /p %log_dir% /d -%bak_dat% /m "20*" /c "cmd /c if @isdir==TRUE (rmdir /q /s @path)"
:: 以上兩條命令根據自己實際情況作出修改
forfiles 參數
/p:指定文件夾
/d:指定時間,通過文件的上次修改日期選擇文件,主要有以下兩種寫法:
-Day,-YYYY-MM-DD
-7表示,七天前的數據,
+7表示,過去七天的數據,
-2018-01-01,2018-01-01前的數據
+2018-01-01,2018-01-01之后的數據
/m:名稱,支持通配符*
/s:遞歸搜索
/c command 表示為每個匹配到的對象執行的命令。命令字符串應該用雙引號括起來。默認命令是 "cmd /c echo @file"。下列變量可以用在命令字符串中:
rmdir參數
/q:刪除目錄時不提示確認,直接刪除
/s:表示刪除該目錄下所有遍歷的子目錄和文件