Foxtable(狐表)用户栏目项目发布 → [原创]通用代码之全自动备份


  共有6798人关注过本帖树形打印复制链接

主题:[原创]通用代码之全自动备份

帅哥哟,离线,有人找我吗?
lxy060669
  1楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:幼狐 帖子:168 积分:2609 威望:0 精华:0 注册:2012/10/16 22:38:00
[原创]通用代码之全自动备份  发帖心情 Post By:2018/5/27 11:31:00 [显示全部帖子]

       在此分享一段通用代码。主要功能是通过压缩,实现系统全自动备份。在项目事件BeforeCloseProject中引用。备份的内容包括项目下的所有文件包括子文件夹下的内容,且按原路径备份。zip文件优先存盘在D:,只有C盘的,则存在我的文档下。
  话不多说,贴出代码:
'------自动备份,存在D驱,则存在D盘,否则存在我的文档下.
Dim zip As New zipFile
Dim idx As Integer = ProjectFile.LastIndexOf(".")
Dim idx1 As Integer = ProjectFile.LastIndexOf("\")
Dim proname As String  = ProjectFile.SubString(idx1+1,idx-idx1-1) & "bak"
Dim bakfolder As String
If FileSys.DirectoryExists("D:\") Then '如果目录C:\MyFolder存在
    bakfolder="d:\ftaxbak\" & proname & "\"
Else
    bakfolder=SpecialFolder.MyDocuments & "\ftaxbak\" & proname & "\"
End If

If FileSys.DirectoryExists(bakfolder)=False Then '如果备份目录存在
    FileSys.CreateDirectory(bakfolder) '创建备份目录
End If
zip.Create( bakfolder & proname & Format(now(),"yyyyMMddHHmm") & ".zip")
zip.AddFile(ProjectFile)
'--添加压缩项目路径下文件
For Each File As String In FileSys.GetFiles(ProjectPath )
    zip.AddFile(File,FileSys.GetName(File))
Next
'--添加压缩子文件夹下文件
For Each wjj As String In FileSys.GetDirectories(ProjectPath)
    Functions.Execute("zipinputfile",zip,wjj)
    '递归函数的代码
    'Dim zip As zipFile = args(0)
    'Dim wjj As String =args(1)
    'For Each wjpath As String In FileSys.GetFiles(wjj)
    ''Output.Show( wjj.Replace(ProjectPath,"") & "\" & FileSys.GetName(wjpath))
    'zip.AddFile(wjpath, wjj.Replace(ProjectPath,"") & "\" & FileSys.GetName(wjpath))
    'Next
    'For Each zwjj As String In FileSys.GetDirectories(wjj)
    'Functions.Execute("zipinputfile",zip,zwjj)
    'Next
    
Next
zip.Close()
'在程序项目退出事件中
For Each dt As DataTable In DataTables
    If dt.HasChanges Then
        dt.Save()
    End If
Next

     再给你个小技巧,将这段代码写入“代码库”中,以后每写一个新程序,只需从这里添加即可。 

[此贴子已经被作者于2018/5/27 11:35:41编辑过]

 回到顶部
帅哥哟,离线,有人找我吗?
lxy060669
  2楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:幼狐 帖子:168 积分:2609 威望:0 精华:0 注册:2012/10/16 22:38:00
  发帖心情 Post By:2018/5/27 11:32:00 [显示全部帖子]

这里上篇引用的递归函数的代码,由于一个帖子的内容超出16000字符就写不进去。所以放在这里。
'递归函数,取名zipinputfile,拷入自定义函数,去掉注释。
'Dim zip As zipFile = args(0)
'Dim wjj As String =args(1)
'For Each wjpath As String In FileSys.GetFiles(wjj)
'zip.AddFile(wjpath, wjj.Replace(ProjectPath,"") & "\" & FileSys.GetName(wjpath))
'Next
'For Each zwjj As String In FileSys.GetDirectories(wjj)
'Functions.Execute("zipinputfile",zip,zwjj)
'Next 
Next
zip.Close()

 回到顶部