找回密码
 立即注册
搜索
查看: 218|回复: 4

[求助]:关于批处理中删除部分文件夹的问题

[复制链接]

154

主题

2645

回帖

2802

积分

荣誉版主

积分
2802
发表于 2008-5-6 11:41:20 | 显示全部楼层 |阅读模式
我的问题是这么产生的:
在windows平台下,目前我采用批处理备份svn
  set BACKUP_SVN_ROOT=G:\bak  备份的目录
    set BACKUP_DIRECTORY=%BACKUP_SVN_ROOT%\%date:~0,10%  创建日期名文件夹,如 2008-05-06
计划任务中每天晚上自动执行,日积月累内容会比较多,我想自动删除部分不需要的备份
删除多于30个的文件夹,且只删除日期最久的,
请问有没什么脚本可以做到?

[[i] 本帖最后由 dea 于 2008-5-6 11:43 编辑 [/i]]

599

主题

1万

回帖

1万

积分

版主

积分
15875
发表于 2008-5-6 15:19:36 | 显示全部楼层
我觉得使用VBScript会方便些,思路供你参考:

我没有算备份目录中有多少个文件夹,我是检查每个文件夹的日期,如果日期超过30天,就将它删掉。

将下面的保存取一个名为Housekeep.vbs的文件,然后运行:
CScript //nologo Housekeep.vbs %BACKUP_SVN_ROOT% 30
  1. Dim strPath  ' 备份的目录
  2. Dim dayKept  ' 需要保留的时间,以天为单位
  3. strPath=WScript.Arguments.Item(0)
  4. dayKept=WScript.Arguments.Item(1)

  5. Dim fileSystemObject, folderInfo, folderCollection, subFolder

  6. Set fileSystemObject = CreateObject("Scripting.FileSystemObject")
  7. Set folderInfo = fileSystemObject.GetFolder(strPath)
  8. Set folderCollection = folderInfo.SubFolders

  9. '列出备份目录的子文件夹
  10. For Each subFolder in folderCollection
  11.         ' 检查文件夹的修改时间,如果超过需要保留的时间,删除整个文件夹
  12.         If (DateDiff("d", subFolder.DateLastModified, Now) > CInt(dayKept) ) Then
  13.            fileSystemObject.DeleteFolder(subFolder)
  14.         End If       
  15. Next
复制代码
guodl
回复

使用道具 举报

154

主题

2645

回帖

2802

积分

荣誉版主

积分
2802
 楼主| 发表于 2008-5-7 19:20:39 | 显示全部楼层
谢谢兄弟!
明儿试试
回复

使用道具 举报

599

主题

1万

回帖

1万

积分

版主

积分
15875
发表于 2008-8-20 13:26:50 | 显示全部楼层
其实删除的时间是一个参数:

CScript //nologo Housekeep.vbs 目录 保存的时间 

比如:

CScript //nologo Housekeep.vbs c:\bak  7
guodl
回复

使用道具 举报

197

主题

3957

回帖

5485

积分

网站编辑

积分
5485
发表于 2008-8-21 01:03:29 | 显示全部楼层
建议考虑betacopy,功能强大,定时,增量,免费.
海纳百川,有容乃大
-----------------------------------------
一网浏览人间事,一心读遍天下书
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Archiver|手机版|小黑屋|海浩社区

GMT+8, 2025-9-18 00:35 , Processed in 0.083925 second(s), 21 queries .

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

快速回复 返回顶部 返回列表