关闭

用批处理文件删除n天前的文件&&用批处理实现的保留最近的n个文件 最简单方法

标签: dosfilec
1490人阅读 评论(0) 收藏 举报

服務器上面的日誌文件以及備份文件眞是麻煩,時常要手工清理,過一段時間就塞满硬盘了! 看来要做一个批处理文件来代劳!网上查找了一下,发现都比较复杂!想写一个简单一点的纯DOS的BAT。总结了一下。。哈哈。。出来了 。 如下:

dir *.log /O:-D >dir.txt
for /F "skip=n tokens=4" %%a in (dir.txt) do @if exist %%a echo %%a

下面就以上的语句解释一下:

dir *.log /O:-D >dir.txt
按时间排序(从後到先)并输入到dir.txt文件

C:/WINNT/system32/LogFiles/W3SVC1>dir *.log /O:-D
 Volume in drive C has no label.
 Volume Serial Number is D8C3-3037

 Directory of C:/WINNT/system32/LogFiles/W3SVC1

14/09/2007  10:49            4,390,912 ex070914.log
14/09/2007  07:59           18,033,708 ex070913.log
13/09/2007  07:59           18,293,497 ex070912.log
12/09/2007  08:00           18,125,543 ex070911.log
11/09/2007  08:00           12,988,996 ex070910.log
10/09/2007  07:59                    0 ex070909.log
09/09/2007  07:59            7,274,466 ex070908.log
08/09/2007  07:59              122,680 ex070907.log
07/09/2007  07:58                    0 ex070906.log
06/09/2007  07:58                    0 ex070905.log
05/09/2007  07:58                    0 ex070904.log
04/09/2007  07:59            9,371,549 ex070903.log
03/09/2007  07:59            1,509,238 ex070902.log
02/09/2007  07:59           15,580,651 ex070901.log
01/09/2007  07:59           17,188,615 ex070831.log

..................

 126 File(s)  1,920,550,148 bytes
   0 Dir(s)   9,937,321,984 bytes free

for /F "skip=n tokens=4" %%a in (dir.txt) do @if exist %%a echo %%a

取dir.txt文件中第4列,如果存在就显示出来!如果要删除,将echo 换成 del 即可!

skip=n  重点就在这里了。skip=n 就是从首行开始跳过n行

如上面例子的我只要保留最近的3个文件

14/09/2007  10:49            4,390,912 ex070914.log
14/09/2007  07:59           18,033,708 ex070913.log
13/09/2007  07:59           18,293,497 ex070912.log

那么就应该是

n =5+3=8

for /F "skip=8 tokens=4" %%a in (dir.txt) do @if exist %%a echo %%a

 

 

0
0

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:55734次
    • 积分:755
    • 等级:
    • 排名:千里之外
    • 原创:13篇
    • 转载:30篇
    • 译文:0篇
    • 评论:1条
    文章分类