如何使用VBS脚本删除10天以上目录树中的所有文件?

时间:2014-08-01 13:21:53

标签: vbscript

我在C:\data内有一个包含大量文件夹的服务器。我讲了大约5000个子文件夹,每个文件夹都有一个随机名称,例如sgshVSHsXx.wjwuhHHS

每个文件夹都包含一个名为DB的子文件夹,每个DB个文件夹都包含一些数据库文件,还包含随机文件名和随机文件扩展名。

我需要浏览所有DB个文件夹并删除超过10天的所有文件。

我认为我可以使用一些VBS,但对它没有多少经验。有人可以对这个问题有所了解吗?

由于

2 个答案:

答案 0 :(得分:2)

当然批处理或命令提示符适用于此

forfiles /p "c:\data" /m * /s /d -10 /c "cmd /c del @path"

并且是一行。

答案 1 :(得分:1)

将以下内容另存为.vbs文件

set args = wscript.arguments
if args.count <> 2 then
    wscript.echo "Syntax: " & wscript.scriptname & " <path> <days>" 
    wscript.quit
end if

path = args(0)
killdate = date() - args(1)

arFiles = Array() 
set fso = createobject("scripting.filesystemobject") 

SelectFiles path, killdate, arFiles, true 

nDeleted = 0 
for n = 0 to ubound(arFiles) 

  on error resume next 'in case of 'in use' files... 
  arFiles(n).delete true 
  if err.number = 0 then 
     nDeleted = nDeleted + 1 
  end if 
  on error goto 0 
next 

sub SelectFiles(sPath,vKillDate,arFilesToKill,bIncludeSubFolders) 
  on error resume next 
  set folder = fso.getfolder(sPath) 
  set files = folder.files 

  for each file in files 
    dtlastmodified = null 
    on error resume Next 
    dtlastmodified = file.datelastmodified 
    on error goto 0 
    if not isnull(dtlastmodified) Then 
      if dtlastmodified < vKillDate then 
        count = ubound(arFilesToKill) + 1 
        redim preserve arFilesToKill(count) 
        set arFilesToKill(count) = file 
      end if 
    end if 
  next 

  if bIncludeSubFolders then 
    for each fldr in folder.subfolders 
      SelectFiles fldr.path,vKillDate,arFilesToKill,true 
    next 
  end if 
end sub

运行: .vbs“”

例如: c:\ delete.vbs“c:\ test folder \”10

确保从管理员命令提示符

运行

# 源:http://community.spiceworks.com/scripts/show/282-delete-old-files-with-recursion