dos批处理命令forfiles

上传人:枫** 文档编号:509421462 上传时间:2023-07-13 格式:DOCX 页数:4 大小:14.78KB
返回 下载 相关 举报
dos批处理命令forfiles_第1页
第1页 / 共4页
dos批处理命令forfiles_第2页
第2页 / 共4页
dos批处理命令forfiles_第3页
第3页 / 共4页
dos批处理命令forfiles_第4页
第4页 / 共4页
亲,该文档总共4页,全部预览完了,如果喜欢就下载吧!
资源描述

《dos批处理命令forfiles》由会员分享,可在线阅读,更多相关《dos批处理命令forfiles(4页珍藏版)》请在金锄头文库上搜索。

1、文档供参考,可复制、编制,期待您的好评与关注! dos 批处理命令(forfiles)Windows Server 2003内置的命令行文件,不适合于XP系统1. 用批处理文件删除当前目录下 7 天以前的扩展名为bkf文件(以当前系统时间为基准) 示例: forfiles /m *.bkf /d -7 /c cmd /c del file /f2. forfiles 自动删除7天前文件 (以当前系统时间为基准)示例: forfiles /p d:test /s /m *.* /d -7 /c cmd /c del path d:test换成你要的目录路径; /d -7 指删除7天以前文件。3.

2、 删除所有的空目录(以删除d:test目录下为例) :dir /ad/b/s d:test |sort /r d:kill.txtFor /f tokens=* %i in (d:kill.txt) DO rd %idel d:kill.txt4. 先删7 天以前文件,再删所有的空目录 ;把以下复制到bat文件中。echo offforfiles /p d:test /s /m *.* /d -7 /c cmd /c del pathdir /ad/b/s d:test |sort /r d:kill.txtFor /f tokens=* %i in (d:kill.txt) DO rd %i

3、del d:kill.txt5. forfiles 命令的用法及参数: forfiles /p /d /c /p 指定了要在哪个目录里查找文件,默认是当前工作目录。 /d 指定一个日期或天数,用于比较文件的最后修改日期是否符合条件。 /c 对每个找到的文件执行的命令。例1.要把在C盘根目录下最后修改日期大于或等于2010年1月7日的文件复制到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

4、echo deleting file . & del /f path6. forfiles /p 包含要删除文件的完整路径(如:F:Logfiles) /m *.log -d -7 /c cmd /c del /f path解释一下相关参数及命令/p : 指定开始搜索文件的位置,如果不指定则默认为当前目录。/m : 文件查找所使用的通配符如代码中的*.log则为所有日志文件,当然也可以指定诸如manmee_*.log这样以manmee开头的所有日志文件。如果不指定此参数则默认为*.*。/d +|-| : 指定想选择文件的最后修改时间,上文中用了 /d -7 表示所有以当天为基础,7天以前的文件

5、。当然这里还可以指定具体时间,例如:/d -01/7/2010这样所有早于2010年1月7日的文件。注意指定的时间必须是MM/DD/YYYY的格式。/c 对所有文件以此执行指定的命令,命令体须在双引号()内,默认是cmd /c echo file。上文中用到的是cmd /c del /f path删除指定文件。(这里的file 和 path 为变量,下文中将解释。)下面说一下上文中用到的参数:PATH : 表示文件的完整的路径。File : 表示文件名称。接下来我们看看删除文件夹的操作,如果你看了上面的介绍,相信这命令你一看就能看懂。forfiles /p 包含文件夹的路径(如:F:) /m

6、文件夹名称(如:LogFiles) -d 0 /c cmd /c if ISDIR = true rd /s/q path注意这里的包含文件夹的路径不能包含要删除的文件夹,如以上代码所表示的就是,在F盘中查找名为LogFiles的文件或文件夹(不能指定查找文件夹,不过在删除时我们做了判断)。还有就是这里出现了一个新的参数ISDIR他用于判断当前文件类型是否是文件夹类型,如果是则为true否则为false。相信到这大家就明白了,最后再将代码保存为批处理文件,然后加入计划任务定期执行即可。看了上面的例子,觉得在 Windows Server 2003 下面要删除老文件很简单吧。但如果操作系统是 W

7、indows 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 获得目标

8、目录的路径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

9、%i in (cscript /nologo %scriptFile%) do set lastDate=%irem 处理目标目录里的每个对象for /f tokens=1,2,3* delims= %i in (dir %dirPath%fileSpec% /a /-c /tc) do call :proc %i %j %k %lgoto :donerem 处理目标目录里对象的过程:procrem 获得对象的创建日期并判断是否为有效格式set fileDate=%1echo %fileDate% | findstr 0-90-90-90-9-0-90-9-0-90-9 nulif error

10、level 1 goto endrem 获得对象的类型set fileType=%3if %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 %fi

11、leName% .if %fileType% = DIR ( rd /s /q %dirPath%fileName% ) else ( del /q /f %dirPath%fileName% )goto end:errorecho An error occurred during backuping.:donerd /s /q %tempDir%goto end:printUsageecho Usage: %0 Work directory Target file specification (can include wildcards)goto end:end主要是利用Windows的脚本功能来计算要删除文件的截止日期,然后for加dir命令来提取文件的日期进行判断。关于forfiles和for的详细信息,可以在Windows的帮助与支持中找到。 /

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 行业资料 > 国内外标准规范

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号