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