《用批处理文件删除n天前的文件 DEL.pdf》由会员分享,可在线阅读,更多相关《用批处理文件删除n天前的文件 DEL.pdf(2页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、用批处理文件删除 n 天前的文件 DELforfiles/p forfiles/p /d /d /c /c 看看列出的三个参数都有什么用处:/p/p 指定了要在哪个目录里查找文件,指定了要在哪个目录里查找文件,默认是当前工作目录,默认是当前工作目录,注意不能在目录名后面加斜杠。注意不能在目录名后面加斜杠。/d/d 指定一个日期或天数,用于比较文件的最后修改日期是否符合条件。指定一个日期或天数,用于比较文件的最后修改日期是否符合条件。/c/c 对每个找到的文件执行的命令。对每个找到的文件执行的命令。例1.要把在 C 盘根目录下最后修改日期大于或等于2007年7月1日的文件复制到D 盘根目录下:f
2、orfiles/p c:/d 2007-7-1/c cmd/c copy path d:/forfiles/p c:/d 2007-7-1/c cmd/c copy path d:/例2.删除在 C 盘 backup 目录下最后修改日期在10天前的文件:forfiles/p c:/backup/d-10/c cmd/c echo deleting file.&del/f pathforfiles/p c:/backup/d-10/c cmd/c echo deleting file.&del/f path看了上面的例子,觉得在 Windows Server 2003 下面要删除老文件很简单吧。
3、但如果操作系统是 Windows 2000/XP 就比较麻烦,因为它们没有forfiles 命令,只能靠自己写批处理来实现了。下面是我写的批处理文件内容:echo offrem*rem*按时间删除文件目录的批处理*rem*rem 设置临时目录的路径set tempDir=%tmp%/remove_%date:0,10%if not exist%tempDir%md%tempDir%rem 设置处理日期的脚本文件的路径set scriptFile=%tempDir%/get_date.vbsrem 获得要保留的天数set days=%1if%days%=goto printUsagerem 获得
4、目标目录的路径set dirPath=%2if%dirPath%=set dirPath=.rem 获得要操作的文件形式set fileSpec=%3if%fileSpec%=set fileSpec=*.*rem 生成计算日期的脚本文件并获得删除的截止日期echo d=date()-%1%scriptFile%echo s=right(0000&year(d),4)&-&right(00&month(d),2)&-&right(00&day(d),2)%scriptFile%echo wscript.echo s%scriptFile%for/f%i in(cscript/nologo%sc
5、riptFile%)do set lastDate=%irem 处理目标目录里的每个对象for/f tokens=1,2,3*delims=%i in(dir%dirPath%/%fileSpec%/a/-c/tc)docall:proc%i%j%k%lgoto:donerem 处理目标目录里对象的过程:procrem 获得对象的创建日期并判断是否为有效格式set fileDate=%1echo%fileDate%|findstr 0-90-90-90-9-0-90-9-0-90-9 nulif errorlevel 1 goto endrem 获得对象的类型set fileType=%3if
6、%fileType%=goto endrem 获得对象的名称set fileName=%4if%fileName%=goto endif%fileName%=.goto endif%fileName%=.goto endif%fileName%=字节 goto endif%fileName%=可用字节 goto endrem 判断对象日期是否小于或等于删除的截止日期if%fileDate:0,10%leq%lastDate%(echo deleting%fileName%.if%fileType%=DIR(rd/s/q%dirPath%/%fileName%)else(del/q/f%dirP
7、ath%/%fileName%)goto end:errorecho An error occurred during backuping.:donerd/s/q%tempDir%goto end:printUsageecho Usage:%0 Work directory Target file specification(can includewildcards)goto end:end这个批处理的语句很多,我表达能力有限,不一一解释了。主要是利用 Windows 的脚本功能来计算要删除文件的截止日期,然后 for 加 dir 命令来提取文件的日期进行判断。关于 forfiles 和 for 的详细信息,可以在Windows 的帮助与支持中找到。