用vbs删除某些类型文件和磁盘空间报告的脚本

Option Explicit
dim ServerPath,onlyone,notfinddel,WorkPath,arrWorwpath,strWorkPath,fso,wsh,WshNetwork,cName,exectime,fnum,donum,totalsize,t1,t2,tm
fnum=0
donum=0
totalsize=0
WorkPath = "F:\|D:\|C:\Download\"   '这里设置需要扫描的路径(绝对路径),使用“|”来分隔多个路径
serverpath = "\\server\log$\"       '在这里设置服务器上的共享文件夹(可写共享),用来存放删除日志
onlyone = "是"                     '设置是否只扫描一次,如果想每次运行都扫描,请改为“否”。
notfinddel = "是"       '如果本次运行没有找到任何要删除的内容,就删除日志文件,(你想每次都保留日志的话,请改为“否”)

If Right(serverpath,1) <> "\" Then serverpath = serverpath&"\"
arrWorwpath = Split(WorkPath,"|")
t1 = timer()
Set WSH = WScript.CreateObject("WScript.Shell")
wsh.run "regsvr32 /s scrrun.dll",0,true
Set fso = CreateObject("Scripting.FileSystemObject")
Set WshNetwork = WScript.CreateObject("WScript.Network")
cName = WshNetwork.ComputerName
exectime = Now()
Dim dicdrv,logfile,logfilepath,Objdrv,drvTotalSize,drvFreeSpace
logfilepath = Replace(ServerPath&cName&".txt",":","-")
If Not fso.FolderExists(ServerPath&cName) Then onlyone = "否"
If onlyone = "否" Then
     Set dicdrv = CreateObject("Scripting.Dictionary")
     Set logfile = fso.OpenTextFile(logfilepath,8,True)
     logfile.WriteBlankLines(1)
     logfile.WriteLine "#####################################################"
     logfile.WriteLine "开始扫描--"&Now()
     logfile.WriteBlankLines(1)
     For Each strWorkPath In arrWorwpath
         If Right(strWorkPath,1) <> "\" Then strWorkPath = strWorkPath&"\"
         scan(strWorkPath)
         If Not dicdrv.Exists(UCase(Left(strWorkPath,1))&"t") Then
             Set Objdrv = fso.GetDrive(fso.GetDriveName(Left(strWorkPath,2)))
             dicdrv.add UCase(Left(strWorkPath,1))&"t",FormatNumber(Objdrv.TotalSize/1048576, 0)
             dicdrv.add UCase(Left(strWorkPath,1))&"f",FormatNumber(Objdrv.FreeSpace/1048576, 0)
         End If
     Next
     t2 = timer()
     tm=cstr(int(( (t2-t1)*10000 )+0.5)/10)
     logfile.WriteBlankLines(1)
     logfile.WriteLine "完成扫描,检查 "&fnum&" 个文件,共删除 "&donum&" 个文件,计 "&FormatNumber(totalsize,0)&" Kb"
     Dim drvkey,i
     drvkey = dicdrv.Keys
     For i = 0 To dicdrv.Count-1 Step 2
         logfile.WriteLine Left(drvkey(i),1)&"盘:总计磁盘空间 "&dicdrv.Item(drvkey(i))&" M ,剩余磁盘空间 "&dicdrv.Item(drvkey(i+1))&" M"
     Next
     logfile.WriteLine "耗时 " & tm & " 毫秒,   "&Now()
     logfile.WriteLine "#####################################################"
     logfile.WriteBlankLines(1)
     logfile.close
     If notfinddel = "是" Then
         If donum = 0 Then fso.DeleteFile logfilepath,True
     End If
     If Not fso.FolderExists(ServerPath&cName) Then fso.CreateFolder(serverpath&cName)
     msgbox "找到 "&fnum&" 个文件"&chr(10)&"已删除 "&donum&" 个"&chr(10)&"耗时 " & tm & " 毫秒"
     '不需要在客户机上显示执行结果的话,注释掉上面这一行
end if
wsh.run "regsvr32 /u /s scrrun.dll",0,true
Set WshNetwork = Nothing
Set wsh=NoThing
Set FSO=NoThing
WScript.quit

Sub scan(strfolder_) 
     Dim folder_,files,file,ext,subfolders,subfolder
     'on error resume next
     Set folder_=fso.getfolder(strfolder_)
     Set files=folder_.files 
     For Each file In files
         fnum = fnum+1
         ext=fso.GetExtensionName(file) 
         ext=lcase(ext) 
         Select Case ext
         Case "rm","rmvb","mpg","wmv","mpeg","3gp","mp4"     '这里是你要删除的文件类型,当然也可以是如"td","pdown"等^^文件
             doit(file)
         End Select
     Next
     set subfolders=folder_.subfolders
     For Each subfolder In subfolders
         If subfolder.name <> "System Volume Information" And subfolder.name <> "RECYCLER" Then
             scan(subfolder)
         End If
     Next
End Sub

Sub doit(file)
     Dim strtemp,lngsize,strsizeV
     strtemp = file.path
     lngsize = clng(file.size/1024)
     donum=donum+1
     totalsize = totalsize + lngsize
     'fso.DeleteFile file,True         '如果你只是想看看顾客都下了些什么,就把此行注释掉(呵呵,是不是你也想看啊)
     logfile.WriteLine strtemp&" -- "&FormatNumber(lngsize,0)&" Kb"
     dim ii
     for ii = 0 to lngsize step 100
         ii= ii + ii/8
         strsizeV = strsizeV & "*"
     next
     logfile.WriteLine "---"&strsizeV
end Sub

(0)

相关推荐

  • 用vbs删除某些类型文件和磁盘空间报告的脚本

    Option Explicit dim ServerPath,onlyone,notfinddel,WorkPath,arrWorwpath,strWorkPath,fso,wsh,WshNetwork,cName,exectime,fnum,donum,totalsize,t1,t2,tm fnum=0 donum=0 totalsize=0 WorkPath = "F:\|D:\|C:\Download\"   '这里设置需要扫描的路径(绝对路径),使用"|"来

  • Linux 实现定时文件占用磁盘空间大小操作方法

    打开定时任务编辑,cent 默认使用vim直接打开.ubutun如果装了多种编辑器第一次打开的时候是指定编辑器的操作. (3) */1 * * * * sh /root/Shell/monitor.sh 将这一行添加进文件中.表示每隔一分钟执行一次 sh /root/Shell/monitor.sh 命令,具体更多的定时格式可以网上查询.简单的循环监测只需要这么多 (4) service crond start 启动定时任务.ubutun上是 service cron start (5) 查看c

  • linux下使用 du查看某个文件或目录占用磁盘空间的大小方法

    du -ah --max-depth=1 这个是我想要的结果 a表示显示目录下所有的文件和文件夹(不含子目录),h表示以人类能看懂的方式,max-depth表示目录的深度. du命令用来查看目录或文件所占用磁盘空间的大小.常用选项组合为:du -sh 一.du的功能:`du` reports the amount of disk space used by the specified files and for each subdirectory (of directory arguments)

  • linux 查看磁盘空间大小命令

    Ubuntu 查看文件以及磁盘空间大小管理 (1)查看文件大小 查看当前文件夹下所有文件大小(包括子文件夹) du -sh # du -h 15M ./package 16K ./.fontconfig 4.0K ./.cache 5.1M ./.rpmdb 20M . 查看指定文件夹下所有文件大小(包括子文件夹) # du -h ftp 3.8G ftp/sanya/doc 3.8G ftp/sanya 4.0K ftp/testftp/doc 1.4M ftp/testftp 875M ft

  • Linux磁盘空间被未知资源耗尽的解决方法

    在linux中,当我们使用rm在linux上删除了大文件,但是如果有进程打开了这个大文件,却没有关闭这个文件的句柄,那么linux内核还是不会释放这个文件的磁盘空间,最后造成磁盘空间占用100%,整个系统无法正常运行.这种情况下,通过df和du命令查找的磁盘空间,两者是无法匹配的,可能df显示磁盘100%,而du查找目录的磁盘容量占用却很小. 遇到这种情况,基本可以断定是某些大文件被某些程序占用了,并且这些大文件已经被删除了,但是对应的文件句柄没有被某些程序关闭,造成内核无法回收这些文件占用的空

  • Docker容器导致磁盘空间不足无法访问的解决方法

    目录 问题: 1.进入运行的容器目录 2.查看容器的配置信息 3.删除日志文件 4.正常进入容器 问题: 客户反馈说系统操作,出现问题,查询数据报错,我第一想到的是Redis是不是挂了导致一些存在里面的数据查询失败,后面查看服务是正常的,于是想进入容器项目排查日志,结果进入容器异常错误 1.进入运行的容器目录 输入命令进入容器目录 docker exec -it 容器id bash 提示错误信息: failed to create runc console socket: mkdir /tmp/

  • 使用 Iisext.vbs 删除 Web 服务扩展文件的方法

    应用到: Windows Server 2003, Windows Server 2003 R2, Windows Server 2003 with SP1 可使用命令行脚本 iisext.vbs(存储在 systemroot\system32 中)从 WebSvcExtRestrictionList Metabase Property中删除单个文件.该命令可在运行带有 IIS 6.0 的 Windows Server 2003 家族的成员的本地计算机或远程计算机上执行.Web 服务扩展文件可以

  • python删除指定类型(或非指定)的文件实例详解

    本文实例分析了python删除指定类型(或非指定)的文件用法.分享给大家供大家参考.具体如下: 如下,删除目录下非源码文件 import os import string def del_files(dir,topdown=True): for root, dirs, files in os.walk(dir, topdown): for name in files: pathname = os.path.splitext(os.path.join(root, name)) if (pathna

  • docker清理大杀器/docker的overlay文件占用磁盘太大的解决

    [看网上都是什么迁移文件的就感觉不靠谱,治标不治本啊(这不应该是一个新生代coder的样子)] du -sh* 一路查下去,发现overlay这个文件夹已经爆了. docker system prune -a 才清理了7g的空间,那个文件夹还是30g 磁盘占用路从100%下降到80%左右,这哪里行啊,再跑两天还是满! 最后大杀器来了 安装portainer docker安装教程一堆 我这里使用dokcer-compose部署的所以下面是配置 portainer: image: portainer

  • 为什么MySQL 删除表数据 磁盘空间还一直被占用

    目录 1.Mysql数据结构 2.表文件大小未更改和mysql设计有关 3.那怎么才能让表大小变小 4.Online DDL 5.总结 最近有个上位机获取下位机上报数据的项目,由于上报频率比较频繁且数据量大,导致数据增长过快,磁盘占用多. 为了节约成本,定期进行数据备份,并通过delete删除表记录. 明明已经执行了delete,可表文件的大小却没减小,令人费解 项目中使用Mysql作为数据库,对于表来说,一般为表结构和表数据.表结构占用空间都是比较小的,一般都是表数据占用的空间. 当我们使用

随机推荐