300字范文,内容丰富有趣,生活中的好帮手!
300字范文 > 删除指定天数文件 再删除所有的空目录批处理文件

删除指定天数文件 再删除所有的空目录批处理文件

时间:2022-07-05 18:04:38

相关推荐

删除指定天数文件 再删除所有的空目录批处理文件

需求说明:

有一个普通电脑架设的监控服务器,需要删除指定日期的监控数据,监控数据时2层文件夹加文件

网上找到的好多批处理,不能直接用,因此学习修改如下:

forfiles /p F:\ivms4200\video\RecordFile /m *.* /s /c "cmd /c del /a /q /f @path" /d -60

dir /ad/b/s F:\ivms4200\video\RecordFile\|sort /r >F:\kill.txt

For /f "tokens=*" %%i in (F:kill.txt) DO rd "%%i"

del F:\kill.txt

其中第一行/q作用为删除时不需要确认

参考:

/link?url=Fl2szTRoArAF3YcThmdl_vBy6qqLYQT_QPLa0qQFzLBA_TUn2tebIwC_SRnJMkzg2XOZAy6MT6aX7iX2FGq1Zt9U6Nn-QHVYHZH6X1WUNNS

首先,要说明的是,forfiles是内置的命令行文件,其它系统未必适用。不过,win以上的系统,包括win7、均适用哦。来看forfiles的例子。1.用删除下7天以前的扩展名为bkf文件(以当前系统时间为基准)例如:复制代码代码示例:forfiles/m*.bkf/d-7/c"cmd/cdel@file/f"2.forfiles自动删除7天前文件(以当前系统时间为基准)示例:复制代码代码示例:forfiles/p"d:\test"/s/m*.*/d-7/c"cmd/cdel@path"d:\test换成你要的目录路径;/d-7指删除7天以前文件。3.删除所有的空目录(以删除d:\test目录下为例):复制代码代码示例:dir/ad/b/sd:\test\|sort/r>d:\kill.txtFor/f"tokens=*"%%iin(d:\kill.txt)DOrd"%%i"deld:\kill.txt4.先删7天以前文件,再删所有的空目录;把以下复制到中。复制代码代码示例:@echooffforfiles/p"d:\test"/s/m*.*/d-7/c"cmd/cdel@path"dir/ad/b/sd:\test\|sort/r>d:\kill.txtFor/f"tokens=*"%%iin(d:\kill.txt)DOrd"%%i"deld:\kill.txt5.forfiles命令的用法及参数:forfiles/p<目标目录名>/d<天数>/c<执行的命令>/p指定了要在哪个目录里查找文件,默认是当前工作目录。/d指定一个日期或天数,用于比较文件的最后修改日期是否符合条件。/c对每个找到的文件执行的命令。例1.要把在C盘根目录下最后修改日期大于或等于1月7日的文件复制到D盘根目录下:复制代码代码示例:forfiles/p"c:\"/d"-7-1"/c"cmd/ccopy@pathd:\"例2.删除在C盘backup目录下最后修改日期在10天前的文件:复制代码代码示例:forfiles/p"c:\backup"/d-10/c"cmd/cechodeleting@file...&&del/f@path"6.forfiles/p包含要删除文件的完整路径(如:F:\Logfiles)/m*.log-d-7/c"cmd/cdel/f@path"相关参数及命令/p<Path>:指定开始搜索文件的位置,如果不指定则默认为。/m<SearchMask>:文件查找所使用的通配符如代码中的"*.log"则为所有日志文件,当然也可以指定诸如"manmee_*.log"这样以manmee开头的所有日志文件。如果不指定此参数则默认为"*.*"。/d[{+|-}][{<Date>|<Days>}]:指定想选择文件的最后修改时间,上文中用了"/d-7"表示所有以当天为基础,7天以前的文件。当然这里还可以指定具体时间,例如:"/d-01/7/"这样所有早于1月7日的文件。注意指定的时间必须是"MM/DD/YYYY"的格式。/c对所有文件以此执行指定的命令,命令体须在双引号(")内,默认是"cmd/cecho@file"。上文中用到的是"cmd/cdel/f@path"删除指定文件。(这里的@file和@path为变量,下文中将解释。)上文中用到的参数:@PATH:表示文件的完整的路径。@File:表示文件名称。再来介绍下删除文件夹的操作。forfiles/p包含文件夹的路径(如:F:\)/m文件夹名称(如:LogFiles)-d0/c"cmd/cif@ISDIR==truerd/s/q@path"注意这里的"包含文件夹的路径"不能包含要删除的文件夹,如以上代码所表示的就是,在F盘中查找名为LogFiles的文件或文件夹(不能指定查找文件夹,不过在删除时我们做了判断)。这里出现了一个新的参数"@ISDIR"他用于判断当前文件类型是否是"文件夹类型",如果是则为true否则为false。最后再将代码保存为,然后加入计划任务定期执行即可。分享一段我的内容:复制代码代码示例:@echooffrem******************************rem*按时间删除文件目录的批处理*rem******************************rem设置临时目录的路径settempDir=%tmp%\remove_%date:~0,10%ifnotexist%tempDir%md%tempDir%rem设置处理日期的脚本文件的路径setscriptFile=%tempDir%\get_date.vbsrem获得要保留的天数setdays=%~1if"%days%"==""gotoprintUsagerem获得目标目录的路径setdirPath=%~2if"%dirPath%"==""setdirPath=.rem获得要操作的文件形式setfileSpec=%~3if"%fileSpec%"==""setfileSpec=*.*rem生成计算日期的脚本文件并获得删除的截止日期echod=date()-%1>%scriptFile%echos=right("0000"^&year(d),4)^&"-"^&right("00"^&month(d),2)^&"-"^&right("00"^&day(d),2)>>%scriptFile%echowscript.echos>>%scriptFile%for/f%%iin('cscript/nologo%scriptFile%')dosetlastDate=%%irem处理目标目录里的每个对象for/f"tokens=1,2,3*delims=<>"%%iin('dir"%dirPath%\%fileSpec%"/a/-c/tc')docall:proc"%%i""%%j""%%k""%%l"goto:donerem处理目标目录里对象的过程:procrem获得对象的创建日期并判断是否为有效格式setfileDate=%~1echo%fileDate%|findstr"[0-9][0-9][0-9][0-9]-[0-9][0-9]-[0-9][0-9]">nuliferrorlevel1gotoendrem获得对象的类型setfileType=%~3if"%fileType%"==""gotoendrem获得对象的名称setfileName=%~4if"%fileName%"==""gotoendif"%fileName%"=="."gotoendif"%fileName%"==".."gotoendif"%fileName%"=="字节"gotoendif"%fileName%"=="可用字节"gotoendrem判断对象日期是否小于或等于删除的截止日期if"%fileDate:~0,10%"leq"%lastDate%"(echodeleting"%fileName%"...if"%fileType%"=="DIR"(rd/s/q"%dirPath%\%fileName%")else(del/q/f"%dirPath%\%fileName%"))gotoend:errorechoAnerroroccurredduringbackuping.:donerd/s/q%tempDir%gotoend:printUsageechoUsage:%0^<Days^>[Workdirectory][Targetfilespecification(canincludewildcards)]gotoend:end

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。