想使用VB一键删除最近2个月外的其它所有文件夹怎么办?
vb吧
全部回复
仅看楼主
level 7
peeppp 楼主
如果 d:\abc 中有若干个 以日期命名的文件夹,怎么删除比如2个月前的所有文件夹,保留最近2个月的,比如这样的,保留 2021-11 和 2021-10,其它文件夹全删,请教这样的代码怎么样写简单又有效率?
我用的代码是使用两个文本框获取现在的 年和月,并将月-2,循环判断,有就删,但感觉好傻
2021年11月25日 01点11分 1
level 11
你的问题是,请选择:
①如何识别文件名称是否为最近两月
②如何删除文件夹
2021年11月25日 01点11分 2
我的问题是如何识别【除最近2个月】的文件夹外的其它所有文件夹并删除
2021年11月25日 01点11分
楼主显然这两个问题都可以解决,但是感觉自己解决问题1的思路不算好,想来求个更好的思路
2021年11月25日 02点11分
@初音✨七奈 奥,那就建议,用日期加那个专用函数。
2021年11月25日 09点11分
@peeppp 文件夹拼接为该月1日,当天修改为当月1日,用日期差函数(单位选月)跟2来比较判断
2021年11月25日 09点11分
level 7
这个好,留名学习
2021年11月25日 09点11分 4
level 7
Option Explicit
Private Sub Command1_Click()
Dim DemonFileSystem As New FileSystemObject
Dim DemonFile As Folder
遍历文件夹获取文件夹最后一个日期
Set DemonFile = DemonFileSystem.GetFolder("d:\wwwroot")'最后一个日期的文件夹时间
Print "文件夹创建时间:"; Format(DemonFile.DateCreated, "yyyymm") '文件创建时间
Print "文件夹访问时间:"; Format(DemonFile.DateLastAccessed, "yyyymm") '文件访问时间
Print "文件夹修改时间:"; Format(DemonFile.DateLastModified, "yyyymm") '文件修改时间
然后再挨个和最后一个文件夹创建日期做对比
'对比文件夹创建时间 < Format(DemonFile.DateCreated, "yyyymm") - 2 那么就删除
End Sub
引用mic scr runtime
2021年11月29日 02点11分 5
如果想用当月比,直接获取系统时间,然后格式成年月,然后对比文件夹创建时间如果低于2月就直接删除这个文件夹
2021年11月29日 02点11分
@静听风雨酒独酌 遍历好像不行,因为假如这个里面的文件夹是刚拷过来的,那么创建时间都会变成最新的,比如明明是202101一月的,但新拷贝的就变成202111(11月拷贝)
2021年11月29日 03点11分
@静听风雨酒独酌 怎么快速通过文件夹名字进行判断,超过2个月就直接删
2021年11月29日 03点11分
@peeppp 你看的显示时间应该是修改时间。楼下说的对..取消文本框就好了。直接获取系统时间然后格式成“年月”,然后获取当前文件夹下的所有子文件夹名称。 在循环最后一段加上个判断。把文件夹名字也格式化成“年月”,做个判断,如果当前文件夹名字<系统日期-2 那么就删除这个文件夹
2021年11月29日 05点11分
level 15
其实你自己的思路就可以了,无非是用“文本框”这一点让人感觉你还不会用变量似的[滑稽](也就是你自己“感觉好傻”的原因)
2021年11月29日 03点11分 6
就是不会用,能麻烦直接给个代码吗?谢谢
2021年12月10日 08点12分
level 15
你可以先计算出今天的2个月前是哪一天:
Dim d As Date
d = DateAdd("m", -2, Date)
然后取出这个日期的年月:
Dim s As String
s = Format(d, "yyyy-mm")
这个s就可以直接跟文件夹名比较了,小于等于s的就是2个月之前的
或者上面计算d的时候减1个月也行(-2改成-1),后面就是小于s的是2个月之前的
2021年12月10日 08点12分 7
1