[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
返回列表 发帖
回复  hfxiang
谢谢你的指点。

我试了这个命令,它是以目录的修改日期来判断,而删除日期目录内的子目 ...
xiaoyuwxz 发表于 2022-11-28 15:33



rem 下面为只删除指定目录下的子文件夹和文件,不删除本身目录 ,文件夹名称后面不要添加 \ 字符
set "SrcDir=E:\0006\222"
rem 下面为指定天数之前
set DaysAgo=7

::说明:彻底删除指定路径下指定天数之前(以文件的最后修改日期为准)的文件夹和文件。是彻底删除,并不会出现在回收站里。
forfiles /p %SrcDir% /s /m "*" /d -%DaysAgo% /c "cmd /c del /f /q @path & RD /S /Q @path"

TOP

回复 2# hfxiang
谢谢你的指点。

我试了这个命令,它是以目录的修改日期来判断,而删除日期目录内的子目录,在有残留目录的时候,遍历时间很长,而且会显示报错“错误:系统找不到指定的文件。”
测试中还发现这命令还有个缺点,一旦它自动地删除了最下级目录的文件或目录(目录内还有多级子目录和文件的存在),其父目录的修改时间就会改变,继而就不再删除父目录了。命令执行结束后,还有好多目录还是都存在着。

我设想的是直接根据目录的内容(就是日期形式,用日期格式来做运算)来判断,继而直接rd掉这个日期格式目录(最外层的这个目录)

TOP

本帖最后由 hfxiang 于 2022-11-28 09:57 编辑
  1. forfiles /p "E:\备份文件" /s /m *.* /d -30 /c "cmd /c if @isdir==TRUE rd /s/q @path"
复制代码

TOP

返回列表