打印

[求助] 删除10天前的目录

本主题由 mwpq 于 2007-11-7 09:00 关闭

删除10天前的目录

比如我指定目录c:\test,下面还在不同的日期生成的不同日期的文件夹 比如 2007-8-20 2007-8-17 2007-7-20 。我就想根据这些目录的生成日期来删除前10天生成的目录以及下面的文件。根据现在的日期就应该删除掉 2007-8-17 2007-7-20 这2个文件夹。麻烦各位指点

TOP

写好了,你可以指定是否要强制删除只读文件(把oFolder.delete变成oFolder.delete(True));如果想删除包括第十天创建的文件夹,把>10变成>=10就可以了.
复制内容到剪贴板
代码:
folderPath = InputBox("输入文件夹路径,如""D:\123""")
Set oFSO = CreateObject("Scripting.FileSystemObject")
if oFSO.FolderExists(folderPath) Then
Set oFolders = oFSO.GetFolder(folderPath)
Set oSubFolders = oFolders.SubFolders
For Each oFolder In oSubFolders
sFolder = oFolder.Name
sFolder = CDate(sFolder)
If abs(DateDiff("d", sFolder, Date))>10 Then
oFolder.delete
End If
Next
WScript.Echo "删除完成"
Else
WScript.Echo "文件夹不存在"
End If
本帖最近评分记录
  • mwpq 菊花元 +10 呵呵,辛苦了! 最近我比较忙,难以即 ... 2007-8-28 12:50

TOP

很感谢,我测试下。这是vbs的,不知道是否批处理能否解决这个问题,删文件我知道很轻松有forfiles,就不知道删目录了

TOP

测试出现错误,麻烦看看什么原因:, Q5 u' F2 [( y, t2 p% n
Microsoft (R) Windows Script Host Version 5.6
$ h& Y$ z. e5 F- T6 R版权所有(C) Microsoft Corporation 1996-2001。保留所有权利。
4 R- J( }3 ^# ?& D0 R
. |* R* d# X4 BC:\test\del.vbs(8, 9) Microsoft VBScript 运行时错误: 类型不匹配: 'CDate'

TOP

你的文件名一定要遵循"2007-8-20"这样的格式,这样cddate这个方法就可以识别了.- ]: X7 m9 K- J& b# z
$ C M/ k7 B; F: ^* @
另,这种文件名不是你在楼顶帖子里要求的吗?

TOP

我找到一个
1 r: |2 y% C) m+ E4 g% K: T@echo off( Z6 W: X! Z" `
rem 删除三天前的文件夹2 T/ L2 P: d2 U: D0 Z6 S' m
rem 目标目录为C:\test
( {) { a* w* m' u4 @# P v* W5 pset Target=C:\test
9 ~' b, U0 e8 [& f6 A5 k( D2 adir /b %Target%>%temp%\FolderList.txt5 r# q$ V Q8 W/ A2 S O9 h
echo dt=date()-3>%temp%\OldDate.vbs
0 b7 T9 p, v, Pecho s=right(year(dt),4) ^& right("0" ^& month(dt),2) ^& right("0" ^& day(dt),2)>>%temp%\OldDate.vbs
" z! ^' V, I3 k0 E4 g8 Kecho wscript.echo s>>%temp%\OldDate.vbs/ P7 F- y0 I3 r1 @
for /f %%f in ('cscript /nologo %temp%\OldDate.vbs') do @set DelFlag=%%f# h8 n! e) C. P
for /f %%i in (%temp%\FolderList.txt) do (
& E9 x- `3 X# ] if %%i lss %DelFlag% (0 K* I* J. @1 t0 v& O
rd /s /q %Target%\%%i
# X% R. m( K0 q )8 J% N4 q5 ?' k
)! ]: y) N# K( N; Q: K
del %temp%\FolderList.txt0 e7 {' W0 g9 z$ m
del %temp%\OldDate.vbs
1 }% [+ r5 H1 f, m; `
0 Q$ f( l! R. l, F) g9 [1 c, g( d
但运行不能起作用,我看到 if %%i lss %DelFlag% (,感觉不对吧,怎么一个目录名和时间比对了

TOP

用2003下面的工具, forfiles 可以删除 N 天前生成的文件(夹)

TOP

恩 forfiles针对文件很好用
" R8 k+ W Z0 Z4 |
6 F4 I& S% \" ?' k, l& N; q' r9 a我就很想大家把这些很实用但很少被知晓,我就想能有这么个地方能让大家共享出来就完美了( ?- f- l2 H$ L8 q

- i; y( w8 ^3 r/ [& d j) f[ 本帖最后由 fz-L 于 2007-9-14 21:02 编辑 ]

TOP

对了 下面这个脚本也解决了我的问题 是我误解了
$ F2 C" A0 \& o$ Q# J$ H@echo off
/ Q' i7 {, s* V4 X Krem 删除三天前的文件夹
9 j$ o3 `: g4 Q' ?rem 目标目录为C:\test$ L! p; K' t6 c6 w
set Target=C:\test6 f6 ~1 h5 K+ ^2 T% B9 B+ H5 Y# K
dir /b %Target%>%temp%\FolderList.txt
& v% S- B+ y, I: e# vecho dt=date()-3>%temp%\OldDate.vbs% ?) x, r; g! w% a S
echo s=right(year(dt),4) ^& right("0" ^& month(dt),2) ^& right("0" ^& day(dt),2)>>%temp%\OldDate.vbs
9 F7 {8 T0 O' hecho wscript.echo s>>%temp%\OldDate.vbs! u$ D7 k4 U, x
for /f %%f in ('cscript /nologo %temp%\OldDate.vbs') do @set DelFlag=%%f9 K/ t* {+ r$ y8 Q5 s! W9 _8 y
for /f %%i in (%temp%\FolderList.txt) do (
$ P" {# z( [" s/ G9 A) |2 [. U! U if %%i lss %DelFlag% (
/ c; ?2 L2 d w rd /s /q %Target%\%%i
9 \+ U$ t) d0 U, W+ B+ C )
* C7 I# f' T8 V( U- i& K8 G b )
5 {% i: d. T; [9 C/ u4 bdel %temp%\FolderList.txt
" c4 y5 ?. s2 V, u- B( Q; }del %temp%\OldDate.vbs) r( K. ^1 x0 b( U" J

# o# ]- T1 N6 w% ^$ O$ k4 ^这句 if %%i lss %DelFlag%,必须是以日期为目录名才行的

TOP