千金一刻莫空度,老大无成空自伤。这篇文章主要讲述VBS获取指定目录下最新文件拷贝然后以当前日期命名相关的知识,希望能为你提供帮助。
VBS获取指定目录下最新文件拷贝然后以当前日期命名
近期有个需求,想对数据的备份目录中数据再次远程拷贝到计算机上,所以我们就通过vbs脚本将备份目录下的最新文件拷贝到指定目录,然后以当前的系统日期命名,总结为下:
我们在D盘下的data目录下有系统的备份文件,然后以日期命名,我们想通过获取文件的最后 一次修改时间进行获取最新文件,然后进行拷贝
文章图片
然后拷贝到指定目录中,我们也可以拷贝到远程计算机
我们在本地进行测试,在D盘下的databackup中即可
文章图片
代码送上:
sourcefilespath="D:\\data" \'desfilepath="\\\\x.x.x.x\\Backup\\DataBackup"& ""& Year(date)& -Month(date)& -Day(date)& " "& Hour(time)& -Minute(time)& "\\" desfilepath="D:\\dbbackup\\"& ""& Year(date)& -Month(date)& -Day(date)& " "& Hour(time)& -Minute(time)& "\\" Set dic=CreateObject("Scripting.Dictionary") Set fso=CreateObject("Scripting.FileSystemObject") If Not fso.FolderExists(desfilepath) Then fso.CreateFolder desfilepathEnd IfbackFolderPath=GetLastModify(sourcefilespath) fso.CopyFile backFolderPath,desfilepath& fso.GetFileName(backFolderPath) msgbox "Finish"\'\'移动文件 Function MoveFiles(yPath,sPath) On Error Resume Next Dim folder,Files,File,subFolder,subFolders Set fso = createobject("scripting.FileSystemObject") Set Folder = fso.getFolder(yPath) Set Files = Folder.Files \'msgbox yPath & sPaht For Each File In Files fso.MoveFile File,sPath& "\\" \'msgbox File Next Set subFolder = Folder.SubFolders For Each subFolders In subFolder folderTemp = Split(subFolders,"\\") FolderName=FolderTemp(ubound(folderTemp)) fso.createFolder(sPath& "\\"& FolderName) MoveFiles subFolders,sPath& "\\"& FolderName& "\\" fso.DeleteFolder subFolders Next End FunctionFunction GetLastModify(folder) Set fso = createobject("scripting.FileSystemObject") Set Folder=fso.getFolder(folder) Set subFolders = Folder.Files nowdate= Now For Each subFolder In subFolders dic.Add datediff("s",subFolder.DateLastModified,nowdate),subFolder.path Next NumArray=dic.Keys bn = NumArray(0) For Each nn In NumArray If bn > = nn Then bn = nn End If Next GetLastModify = dic.Item(bn) End FunctionFunction fSortArray(aSortThisArray) Dim oArrayList, iElement Set oArrayList = CreateObject( "System.Collections.ArrayList" ) For iElement = 0 To UBound(aSortThisArray) oArrayList.Add aSortThisArray(iElement) Next oArrayList.Sort set fSortArray = oArrayList End Function\'\'拷贝文件 Function CopyFiles(yPath,sPath) On Error Resume Next Dim folder,Files,File,subFolder,subFolders Set fso = createobject("scripting.FileSystemObject") Set Folder = fso.getFolder(yPath) Set Files = Folder.Files \'msgbox yPath & sPaht For Each File In Files fso.copyFile File,sPath& "\\" \'msgbox File Next Set subFolder = Folder.SubFolders For Each subFolders In subFolder folderTemp = Split(subFolders,"\\") FolderName=FolderTemp(ubound(folderTemp)) fso.createFolder(sPath& "\\"& FolderName) CopyFiles subFolders,sPath& "\\"& FolderName& "\\" \'fso.DeleteFolder subFolders Next End Function
我们执行脚本后,发现以日期命名,然后将最新的数据拷贝到了这个文件夹路劲下
文章图片
文章图片
如果一个脚本想实现不同目录的数据拷贝的话,我们也可以通过以下方式写,我们有两种,第一种不正规的写法
sourcefilespath="D:\\test" \'desfilepath="\\\\10.12.0.51\\Backup\\DataBackup"& ""& Year(date)& -Month(date)& -Day(date)& " "& Hour(time)& -Minute(time)& "\\" desfilepath="e:\\data1\\"& ""& Year(date)& -Month(date)& -Day(date)& " "& Hour(time)& -Minute(time)& "\\" Set dic=CreateObject("Scripting.Dictionary") Set fso=CreateObject("Scripting.FileSystemObject") If Not fso.FolderExists(desfilepath) Then fso.CreateFolder desfilepath End If backFolderPath=GetLastModify(sourcefilespath) fso.CopyFile backFolderPath,desfilepath& fso.GetFileName(backFolderPath) msgbox "Finish" sourcefilespath2="D:\\test2" \'desfilepath="\\\\10.12.0.51\\Backup\\DataBackup"& ""& Year(date)& -Month(date)& -Day(date)& " "& Hour(time)& -Minute(time)& "\\" desfilepath2="e:\\data2\\"& ""& Year(date)& -Month(date)& -Day(date)& " "& Hour(time)& -Minute(time)& "\\" Set dic=CreateObject("Scripting.Dictionary") Set fso=CreateObject("Scripting.FileSystemObject") If Not fso.FolderExists(desfilepath2) Then fso.CreateFolder desfilepath2 End If backFolderPath=GetLastModify(sourcefilespath2) fso.CopyFile backFolderPath,desfilepath2& fso.GetFileName(backFolderPath) msgbox "Finish" \'\'移动文件 Function MoveFiles(yPath,sPath) On Error Resume Next Dim folder,Files,File,subFolder,subFolders Set fso = createobject("scripting.FileSystemObject") Set Folder = fso.getFolder(yPath) Set Files = Folder.Files \'msgbox yPath & sPaht For Each File In Files fso.MoveFile File,sPath& "\\" \'msgbox File Next Set subFolder = Folder.SubFolders For Each subFolders In subFolder folderTemp = Split(subFolders,"\\") FolderName=FolderTemp(ubound(folderTemp)) fso.createFolder(sPath& "\\"& FolderName) MoveFiles subFolders,sPath& "\\"& FolderName& "\\" fso.DeleteFolder subFolders Next End Function Function GetLastModify(folder) Set fso = createobject("scripting.FileSystemObject") Set Folder=fso.getFolder(folder) Set subFolders = Folder.Files nowdate= Now For Each subFolder In subFolders dic.Add datediff("s",subFolder.DateLastModified,nowdate),subFolder.path Next NumArray=dic.Keys bn = NumArray(0) For Each nn In NumArray If bn > = nn Then bn = nn End If Next GetLastModify = dic.Item(bn) End Function Function fSortArray(aSortThisArray) Dim oArrayList, iElement Set oArrayList = CreateObject( "System.Collections.ArrayList" ) For iElement = 0 To UBound(aSortThisArray) oArrayList.Add aSortThisArray(iElement) Next oArrayList.Sort set fSortArray = oArrayList End Function \'\'拷贝文件 Function CopyFiles(yPath,sPath) On Error Resume Next Dim folder,Files,File,subFolder,subFolders Set fso = createobject("scripting.FileSystemObject") Set Folder = fso.getFolder(yPath) Set Files = Folder.Files \'msgbox yPath & sPaht For Each File In Files fso.copyFile File,sPath& "\\" \'msgbox File Next Set subFolder = Folder.SubFolders For Each subFolders In subFolder folderTemp = Split(subFolders,"\\") FolderName=FolderTemp(ubound(folderTemp)) fso.createFolder(sPath& "\\"& FolderName) CopyFiles subFolders,sPath& "\\"& FolderName& "\\" \'fso.DeleteFolder subFolders Next End Function
我们可以看见,如果有多个目录的话,我们把函数以外的数据进行了多条执行,但是这样不科学,我们可以采用arry的方式,所以修改见下:
sourcefilespath = Array("D:\\data" , "D:\\data2") desfilepath = Array("D:\\dbbackup\\"& ""& Year(date)& -Month(date)& -Day(date)& " "& Hour(time)& -Minute(time)& "\\" , "D:\\dbbackup\\"& ""& Year(date)& -Month(date)& -Day(date)& " "& Hour(time)& -Minute(time)& "\\") Set dic=CreateObject("Scripting.Dictionary") Set fso=CreateObject("Scripting.FileSystemObject") For Each destfold In desfilepath If Not fso.FolderExists(desfilepath) Then fso.CreateFolder desfilepath End If Next WScript.Quit For Each srcfile In sourcefilespath backFolderPath=GetLastModify(srcfile) For Each destfold In desfilepath fso.CopyFile backFolderPath,destfold& fso.GetFileName(destfold) next next msgbox "Finish" \'\'移动文件 Function MoveFiles(yPath,sPath) On Error Resume Next Dim folder,Files,File,subFolder,subFolders Set fso = createobject("scripting.FileSystemObject") Set Folder = fso.getFolder(yPath) Set Files = Folder.Files \'msgbox yPath & sPaht For Each File In Files fso.MoveFile File,sPath& "\\" \'msgbox File Next Set subFolder = Folder.SubFolders For Each subFolders In subFolder folderTemp = Split(subFolders,"\\") FolderName=FolderTemp(ubound(folderTemp)) fso.createFolder(sPath& "\\"& FolderName) MoveFiles subFolders,sPath& "\\"& FolderName& "\\" fso.DeleteFolder subFolders Next End Function Function GetLastModify(folder) Set fso = createobject("scripting.FileSystemObject") Set Folder=fso.getFolder(folder) Set subFolders = Folder.Files nowdate= Now For Each subFolder In subFolders dic.Add datediff("s",subFolder.DateLastModified,nowdate),subFolder.path Next NumArray=dic.Keys bn = NumArray(0) For Each nn In NumArray If bn > = nn Then bn = nn End If Next GetLastModify = dic.Item(bn) End Function Function fSortArray(aSortThisArray) Dim oArrayList, iElement Set oArrayList = CreateObject( "System.Collections.ArrayList" ) For iElement = 0 To UBound(aSortThisArray) oArrayList.Add aSortThisArray(iElement) Next oArrayList.Sort set fSortArray = oArrayList End Function \'\'拷贝文件 Function CopyFiles(yPath,sPath) On Error Resume Next Dim folder,Files,File,subFolder,subFolders Set fso = createobject("scripting.FileSystemObject") Set Folder = fso.getFolder(yPath) Set Files = Folder.Files \'msgbox yPath & sPaht For Each File In Files fso.copyFile File,sPath& "\\" \'msgbox File Next Set subFolder = Folder.SubFolders For Each subFolders In subFolder folderTemp = Split(subFolders,"\\") FolderName=FolderTemp(ubound(folderTemp)) fso.createFolder(sPath& "\\"& FolderName) CopyFiles subFolders,sPath& "\\"& FolderName& "\\" \'fso.DeleteFolder subFolders Next End Function
【VBS获取指定目录下最新文件拷贝然后以当前日期命名】
推荐阅读
- 中控考勤机二次开发小记
- 如何激活已过试用期的System Center 2012 Operations Manager
- Microsoft Project Honolulu上手体验
- 数据仓库的未来 MariaDB ColumnStore
- 在Docker中部署Confluence和jira-software
- 主流区块链技术特点及Fabric V0.6&V1.0版本特点
- 51CTO新品发布,打造高效能技术团队
- 疫情期间,这家土生土长的农商行做了这些事
- 物联网智能网关-12以网关为核心,互联网为基础构建物联网平台