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

服務器上面的日誌文件以及備份文件眞是麻煩,時常要手工清理,過一段時間就塞满硬盘了! 看来要做一个批处理文件来代劳!网上查找了一下,发现都比较复杂!想写一个简单一点的纯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

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值