`
bluethink
  • 浏览: 98072 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

[原创]自制的Windows下的文件清理工具

阅读更多
最近在一项目里需定期清理指定路径下的过期文件,因为客户用的是windows操作系统,因此首先想到用windows脚本来实现,
这里的Windows脚本是指Windows Script Host(WSH Windows脚本宿主),因为目前的的清理只是把文件移动到不同的地方,因此这里的清理还不算真正的清理,根据要求可以修改

脚本实现下面的下功能:
1.批处理方式执行清理
  在配置文件中添加相应的配置可以对多个路径下的过期文件执行清理


2.单步操作方式执行清理
  指定单独的路径,执行清理工具只清理此路径下的过期文件
  例如执行 movePlan 10 c:\tempfile d:\tempfile
会把c:\tempfile从当前日期算起超过10天的文件移动到d:\tempfile里面



脚本由以下3个文件组成
代码文件:moveFiels.vbs
批处理文件:movePlan.bat
配置文件:pathList.txt

配置文件的参数格式:
<过期的天数1>,<源路径1>,<目标路径1>
<过期的天数2>,<源路径2>,<目标路径2>
<过期的天数3>,<源路径3>,<目标路径3>


配置文件的参数要求:
  • 各字段用半角逗号分隔
  • 路径配置文件文件名不可以改变或移动位置,需要和上面的两个文件在同一路径下
  • 文件里可以配置多个记录,用于监控多个路径下的文件
  • 源路径和目标路径必须是有效的,源路径和目标路径不可以相同,并且要用绝对路径
  • 保留文件的天数必须是整数且最小大于5,如果保留的文件的天数小于5,按5天处理
  • 目标路径下的同名文件会被源路径下的文件强制覆盖
  • 配置文件里每行为一个配置记录,如果某一行的配置参数小于3个,此配置记录将被忽略
  • 如果原路径或目标不是有效的路径,此配置记录将被忽略


on error resume Next

Set objArg = Wscript.Arguments
If (objArg.Count=3) Then 
  Set fso=CreateObject("Scripting.FileSystemObject")
  checkPlan objArg(0), objArg(1), objArg(2),fso
Else 
  MonitorProcess()
End If 


Function MonitorProcess()
  Set fso=CreateObject("Scripting.FileSystemObject")
	Dim filename,strFileLine,objMonitorFile,fso,arrProcessParaInfo
	filename = "pathlist.txt"
	If Not (fso.fileexists(filename)) Then
        WriteLog("没有找到文件 "& filename & "!" &vbCrLf&"请确定文件的位置!")
        Wscript.Quit
	End If

	Set objMonitorFile = fso.OpenTextFile(filename,1)
	Do While objMonitorFile.AtEndOfStream <> True
		WriteLog (" ")
        strFileLine = trim(objMonitorFile.ReadLine)		
		arrProcessParaInfo = split(strFileLine,",")
		
		'chaeck parameters count
		arrLength =  UBound(arrProcessParaInfo)

		If arrLength=2 Then

			checkPlan trim(arrProcessParaInfo(0)),trim(arrProcessParaInfo(1)),trim(arrProcessParaInfo(2)),fso

		Else 

			WriteLog("配置错误: 配置参数应该是3个, 原始配置:" & strFileLine)

		End If
    Loop

	objMonitorFile.Close

	Set objMonitorFile = Nothing
	Set objFso         = Nothing

End Function

Sub checkPlan(recDays,srcPath,destPath,fso)	
	'string convert to int
	recDays = Cint(trim(recDays))
		
	srcpath= trim(srcPath) 
	destpath = trim(destPath)
	
	'check days
	If (recDays<5) Then 
			recDays = 5
	End If 
			
	'check path
	if (fso.FolderExists(srcpath)) And (fso.FolderExists(destpath))  Then 			
		process recDays,srcpath,destpath,fso
		'WriteLog("OK 准备移动文件")
	Else 
		WriteLog("源路径或目标路径不存在")
	End If	 
End Sub 


Sub Process(recDays,srcPath,destPath,fso)
	count = 0
	deleCount = 0
	overWrite =""

	set srcPathTemp=fso.getfolder(srcPath)
	set files=srcPathTemp.files
	fileCount = fso.GetFolder(srcPath).Files.Count
	WriteLog ("开始执行清理.....")
	WriteLog ("原始路径 " &  srcPath  & "  共 " & fileCount  & " 个文件" )
	WriteLog ("目标路径 " &  destPath)
	If (fileCount < 1 ) Then 
		WriteLog ("原始路径下没有任何文件 ")
		Exit sub
	End If 	

	for each file in files
		getfso=fso.GetFile(file).DateLastModified
		diff = DateDiff("D", CDate(getfso), CDate(Date))
		If diff > recDays Then
			
			destfile = destPath & "\" & file.name
			'if file is opend enforce deleted
			If fso.fileExists(destfile) Then 				
				deleCount = deleCount + 1
				fso.DeleteFile destfile
			End If
			
			fso.MoveFile  file , destPath & "\" & file.name
			count = count + 1			
		End if
	 Next

	 If deleCount >0 Then 
		overWrite = "覆盖目标路径下 " & deleCount & " 个同名个文件."
	 End If 


	 If count >0 Then 		
		WriteLog ("已经移动 " & count & " 个过期文件到目标路径下. " & overWrite )
	 Else 
		WriteLog ("该路径下没有过期个文件.")
	 End If 
end Sub

Function WriteLog(strLog)
    Wscript.Echo Now & " " & strLog
End Function



不足之处:
1 无法实现自动运行,需要添加到计划任务里或有其他的应用调用
2 目前未实现文件的删除操作
3 目前清理文件时无法实现对指定格式的文件进行清理,清理了所有文件
0
0
分享到:
评论

相关推荐

    自制简易VC工程清理工具

    这个工具的主要任务是清理工程目录下的debug和release目录,这些目录通常包含编译生成的可执行文件、库文件、头文件、对象文件等。此外,它还会清除.ncb文件,这是一种由Visual C++用于存储工程信息的非编译类浏览器...

    自制永久免费垃圾文件清理

    这是一款以MS——DOS形式寻找并清理垃圾文件的实用工具,最主要他是免费的!

    自制文件管理工具

    【自制文件管理工具】是一款基于QT库和Visual Studio 2010开发的高效、便捷的文件管理系统,专为管理RO(Ragnarok Online)客户端资源文件设计,但其功能通用,同样适用于其他类型的文件管理需求。这款工具的出现,...

    自制XP系统垃圾清理

    标题中的“自制XP系统垃圾清理”指的是针对微软Windows XP操作系统的一种个人定制的系统优化和清理工具。这个程序可能由编程爱好者或IT专业人士制作,目的是帮助用户有效地清除系统中无用的文件、临时文件、日志文件...

    电脑重复文件清理软件--自制小工具

    电脑重复文件清理软件--自制小工具 ,开发语言python。源码地址:https://blog.csdn.net/weixin_44162809/article/details/121361843?spm=1001.2014.3001.5501

    《原创》制作清理系统文件

    今天,我们要介绍的是一个自制的系统清理工具——《原创》制作清理系统文件,其旨在帮助用户便捷地清理计算机中的无用文件,并且提高个人的电脑维护能力。 在使用任何系统清理工具前,安全和有效性是用户最为关心的...

    自制文件管理工具SRC

    在【自制文件管理工具SRC】中,QT的使用确保了程序能在Windows、Linux和Mac OS等不同操作系统上运行,提升了软件的兼容性和可移植性。 其次,Visual Studio 2010作为集成开发环境(IDE),为开发者提供了代码编辑、...

    电脑,笔记本,服务器,系统清理工具

    例如,Windows自带的磁盘清理工具可以快速找到并清理这些文件。 2. **注册表清理**:注册表是Windows操作系统的核心数据库,存储了系统和应用程序的各种设置。随着时间的推移,注册表可能会积累大量的无效条目,...

    自制数据库空洞率清理工具-C版-02-EasyClean-V1.1(支持南大通用数据库Gbase8a)

    《自制数据库空洞率清理工具-C版-02-EasyClean-V1.1:深入解析与应用》 在IT行业中,数据库管理是至关重要的任务,它关乎数据的存储、检索和安全。本篇文章将深入探讨一款针对南大通用数据库Gbase8a的C语言编写的...

    DotNet自制清理空文件夹工具

    DotNet自制清理空文件夹工具主要用于清理指定目录下的所有空文件夹,注意只是空文件夹,不包括0字节的空文件。运行环境要求:1. 必须Windows环境; 2. 必须安装.net Framework 3.0以上

    自制Windows媒体播放器源码

    在本项目中,我们关注的是一个自制的Windows媒体播放器,其源码是可用的,这对于初学者来说是一个很好的学习资源。这个播放器是用VC++编程语言,并结合MFC(Microsoft Foundation Classes)库构建的。MFC是微软提供...

    使用QT自制的windows下 局域网ip扫描工具

    在本项目中,"使用QT自制的windows下 局域网ip扫描工具"是一个利用QT库编写的软件,它能够帮助用户在Windows操作系统上扫描并发现同一局域网内的设备IP地址。 首先,我们要理解局域网(LAN)的概念,它是指在有限...

    C盘清理工具

    10. **第三方清理工具**:除了自制的批处理工具,市面上还有许多第三方的系统清理软件,如CCleaner、Glary Utilities等,它们提供了更多功能和更完善的清理策略。 总之,"C盘清理工具"是一个旨在简化系统维护、提高...

    自制的图标文件

    自制的图标文件

    自制系统垃圾清理软件

    ### 自制系统垃圾清理软件 在日常电脑使用过程中,系统会不断积累各种临时文件、缓存数据以及其他不再使用的文件,这些被我们称为“系统垃圾”。它们不仅占据宝贵的磁盘空间,还可能导致系统运行速度变慢。为了保持...

    WINDOWS下自制WIFI打开软件

    本教程将详细介绍如何利用压缩包内的工具和自制.BAT文件在Windows系统下快速、便捷地开启Wi-Fi功能。 首先,我们要了解Windows系统内置的Wi-Fi热点功能。Windows 10及更高版本提供了创建无线网络热点的功能,允许...

    文件搜索自制工具.zip

    本文将深入探讨使用C++开发文件搜索工具的核心技术,并结合"文件搜索自制工具.zip"这一实际案例,分析其设计与实现,以及绿色中文版的特点和优势。 首先,我们来看看文件搜索工具的核心功能。这类工具能够帮助用户...

    自制数据库空洞率清理工具-C版-01-EasyClean-V1.0(支持南大通用数据库Gbase8a)

    《自制数据库空洞率清理工具-C版-01-EasyClean-V1.0:解析与应用》 在数据库管理领域,数据存储效率是至关重要的。本文将深入探讨一个专为南大通用数据库Gbase8a设计的C语言实现的空洞率清理工具——EasyClean V1.0...

    自制小程序,轻松清理系统垃圾

    本文介绍了一种通过编写简单的批处理脚本来实现系统垃圾文件清理的方法。这种方法操作简便,易于理解和实施。通过定期运行这样的脚本,可以有效地释放磁盘空间,提升系统的运行效率。需要注意的是,在实际使用过程中...

Global site tag (gtag.js) - Google Analytics