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

[文件操作] [已解决]求助,批处理删除特定文件夹层级的N天前的脚本

本帖最后由 zs895 于 2017-2-14 10:03 编辑

求助,删除特定文件夹层级的N天前的脚本


我这边要做一个脚本就是删除文件夹下面的子文件夹第三层和第五层的test1,test2的N天前的文件,父文件夹太多,没有办法一个一个写出来手工排除,只能通过脚本实现
我不知道用什么语法怎么实现,我目前只知道用FORFILES删除test1,test2文件夹,但是做不到判断文件夹层级,望高手,大侠门告知一二,谢谢

脚本要实现搜索set t6=D:\test_del\文件夹下面的set t8=test1和set t9=test2,并且子文件set t8=test1和set t9=test2要是3级或者5级子文件夹,下的set t7=0天数之前的文件,将文件日志写到set t4=%date:~10,4%%date:~4,2%%date:~7,2%文件中

如果子文件set t8=test1和set t9=test2要是4级或者其他级子文件夹不做删除动作
  1. @echo off
  2. set t4=%date:~10,4%%date:~4,2%%date:~7,2%
  3. set t5=D:\test_del
  4. set t6=D:\test_del\
  5. set t7=0
  6. set t8=test1
  7. set t9=test2
  8. echo ----------- >> %t5%\%t4%.log
  9. FORFILES /P %t6% /S /M %t8% /d -%t7% /c "cmd /c if @isdir==TRUE del @path /q/a/f/s" >> %t5%\%t4%.log
  10. FORFILES /P %t6% /S /M %t9% /d -%t7% /c "cmd /c if @isdir==TRUE del @path /q/a/f/s" >> %t5%\%t4%.log
  11. echo ----------- >> %t5%\%t4%.log
  12. pause
复制代码
1

评分人数

    • Batcher: 感谢给帖子标题标注[已解决]字样PB + 2

回复 2# taofan712


    这个应该不是我们关注的吧?系统会自动处理的

TOP

回复 4# GNU


    是的

TOP

回复 7# CrLf

这个看不太懂

TOP

下面的代码我的意思是找到第三层的test1和test2文件夹,系统里面有很多的test1和test2文件夹
第三层和第五层刚好处于一个父目录下,我使用这个代码可以执行成功,第四层和他们不处于一个父目录
问题如果我第四层和他们处于一个目录,那我需要再执行一次for循环么?
  1. @echo off
  2. set t4=%date:~10,4%%date:~4,2%%date:~7,2%
  3. set t5=D:\test_del
  4. set t7=0
  5. set t8=test1
  6. set t9=test2
  7. for /d %%a in (%t5%\*) do (
  8.     for /d %%b in (%%a\*) do (
  9.         FORFILES /P %%b /S /M %t8% /d -%t7% /c "cmd /c if @isdir==TRUE @echo del @path /q/a/f/s" >> %t5%\%t4%.log
  10. FORFILES /P %%b /S /M %t9% /d -%t7% /c "cmd /c if @isdir==TRUE @echo del @path /q/a/f/s" >> %t5%\%t4%.log
  11.     )
  12. )
复制代码

TOP

这段代码可以“判断夹层”
taofan712 发表于 2017-2-13 16:41



    看不懂

TOP

回复 11# CrLf

这个明显比较简洁明了,看上去不错

TOP

返回列表