找回密码
 加入
搜索
查看: 3930|回复: 3

[原创] 修正论坛上网友发的收藏夹备份助手,修正后可正常编译使用

[复制链接]
发表于 2012-6-14 16:24:04 | 显示全部楼层 |阅读模式
本帖最后由 tywolf 于 2012-6-14 16:25 编辑

我虽然不用IE浏览器,但是老妈平时用IE用习惯了,我又是个整天折磨系统的“坏淫”,有好几次系统被我折磨得半死的时候,刚好老妈在玩,接着就冒出一句:“我的东西怎么又不见啦,你又搞什么啊......”。为了不让“恶梦”继续,我终于决定将老妈的IE收藏夹每天备份到我的网盘上去,于是就打算用AU3写备份脚本,可我写了一半发现在autoit的官方论坛上有别人开源的现成脚本,那我就不费事了,直接下载了测试,能用就行了。结果一测试,这个小脚本问题还不少!

下面是这个脚本的BUG列表及修正办法:
1:7Z文件的路径不对且用的是FileInstall载入的路径,导致编译失败。
   解决办法:
    1.1:将$7z变量删除,改成@ScriptDir代替。
    1.2:将所有FileInstall装载代码删除
2:INI配置文件生成位置错误,导致在用外部程序调用的时候会在调用程序的目录下生成一个多余的配置文件
   解决办法:
    2.1:修正原$ini变量$ini=StringTrimRight(@ScriptName,3)&"ini"为$ini=@ScriptDir&"\"&StringTrimRight(@ScriptName,3)&"ini"
3:在创建备份的时候没有考虑备份数据的时间问题,只精确到了分,这样导致在同一分钟备份的数据无法正确备份,而且新的备份会产生新的文件。对于收藏夹这样的备份来说,旧的备份显然是多余的,可以不予保留。
   解决办法:
    3.1:在每次备份以前先删除原来的备份目录及其备份文件,从新创建即可。
4:将编译的ICO图标直接用物理路径写死在程序里,导致因为ICO图标路径错误无法正确编译
   解决办法:
    4.1:将原来写死在程序里的ICO图标代码删除,直接用SCITE编辑器写入编译的环境变量#PRE_Icon=save.ico,这步可以通过点鼠标完成,不用和我一样手写,我只是习惯了手写比较快。
5:重复代码特别多,维护修改起来太麻烦
   解决办法:
    5.1:将所有备份的代码都做成_BackupFav函数
#region ;**** 参数创建于 ACNWrapper_GUI ****
#PRE_Icon=save.ico
#PRE_Outfile=收藏夹备份助手.exe
#PRE_Res_Comment=收藏夹备份助手
#PRE_Res_Description=收藏夹备份助手
#PRE_Res_Fileversion=2.0.0.0
#PRE_Res_LegalCopyright=Ado
#PRE_Res_File_Add=收藏夹备份助手.ini
#endregion ;**** 参数创建于 ACNWrapper_GUI ****
#include <ButtonConstants.au3>
#include <EditConstants.au3>
#include <GUIConstantsEx.au3>
#include <StaticConstants.au3>
#include <WindowsConstants.au3>
#region ### START Koda GUI section ### Form=E:\Downloads\Koda\收藏夹备份助手.kxf

Dim $ini, $path, $Name, $lnk
$ini = @ScriptDir & "" & StringTrimRight(@ScriptName, 3) & "ini"

Func _BackupFav($runexplorer = False)
        DirRemove($path, 1)
        DirCreate($path)
        $Name = @YEAR & "年" & @MON & "月" & @MDAY & "日" & @HOUR & "时" & @MIN & "分" & @SEC & "秒"
        RunWait(@ScriptDir & '\7z.exe' & ' a' & ' -tzip' & ' -mx9' & ' "' & $path & '\' & $Name & '.zip"' & ' "' & @FavoritesDir & '"', @WindowsDir, @SW_HIDE)
        TrayTip("恭喜!", "收藏夹于 " & $Name & " 备份完成!", 5000)
        If $runexplorer = True Then
                Run("explorer.exe" & " " & $path)
        EndIf
EndFunc   ;==>_BackupFav


;带参数运行即自动备份
If $Cmdline[0] = 1 And $Cmdline[1] = "/b" Then
        $path = IniRead($ini, "backup", "path", "")
        If $path = "" Then
                MsgBox(16, "错误!", "配置文件错误,请重新配置!")
                Exit
        EndIf
        _BackupFav()
        Exit
EndIf

;程序配置界面
$Form1 = GUICreate("收藏夹备份助手", 425, 105, -1, -1)
$Label1 = GUICtrlCreateLabel("备份文件保存目录", 8, 16, 100, 17)
$Input1 = GUICtrlCreateInput("", 112, 12, 241, 21)
$Button1 = GUICtrlCreateButton("浏览", 360, 8, 51, 25)
$Checkbox1 = GUICtrlCreateCheckbox("开机自动备份", 8, 40, 97, 17)
$Button2 = GUICtrlCreateButton("保存设置", 134, 64, 67, 25)
$Button3 = GUICtrlCreateButton("立即备份", 224, 64, 67, 25)
GUISetState(@SW_SHOW)
#endregion ### END Koda GUI section ###

;读取配置文件
$path = IniRead($ini, "backup", "path", "")
If FileExists($path) Then
        GUICtrlSetData($Input1, $path)
Else
        GUICtrlSetData($Input1, "")
EndIf

;检查是否存在开始菜单启动项
$lnk = @StartupCommonDir & "" & StringTrimRight(@ScriptName, 3) & "lnk"
If FileExists($lnk) Then
        GUICtrlSetState($Checkbox1, $GUI_CHECKED)
EndIf

;GUI消息循环
While 1
        $nMsg = GUIGetMsg()
        Switch $nMsg
                Case $GUI_EVENT_CLOSE
                        Exit
                Case $Button1
                        $path = FileSelectFolder("选择保存目录", @ComputerName)
                        If @error <> 1 Then
                                GUICtrlSetData($Input1, $path)
                        EndIf
                Case $Button2
                        $path = GUICtrlRead($Input1)
                        If $path = "" Then
                                MsgBox(16, "错误!", "请先选择保存目录!")
                        ElseIf Not FileExists($path) Then
                                MsgBox(16, "错误!", "目标目录不存在,程序将自动创建该目录!")
                                DirCreate($path)
                        Else
                                IniWrite($ini, "backup", "path", $path)
                                If GUICtrlRead($Checkbox1) = $GUI_CHECKED Then
                                        FileCreateShortcut(@ScriptFullPath, $lnk, @ScriptDir, "/b")
                                Else
                                        FileDelete($lnk)
                                EndIf
                                MsgBox(64, "恭喜!", "设置已保存!", 5)
                        EndIf
                Case $Button3
                        $path = GUICtrlRead($Input1)
                        If $path = "" Then
                                MsgBox(16, "错误!", "请先选择保存目录!")
                        ElseIf Not FileExists($path) Then
                                DirCreate($path)
                        Else
                                _BackupFav(True)
                        EndIf
        EndSwitch
WEnd

评分

参与人数 2金钱 +30 贡献 +1 收起 理由
lpxx + 20
user3000 + 10 + 1 鼓励下! 但应该发到源码区!

查看全部评分

发表于 2012-6-15 09:08:17 | 显示全部楼层
挺幸福的。楼主。
发表于 2012-9-7 01:10:47 | 显示全部楼层
挺幸福的。楼主。
发表于 2012-9-7 07:18:41 | 显示全部楼层

有了7z.exe就完美了

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?加入

×
您需要登录后才可以回帖 登录 | 加入

本版积分规则

QQ|手机版|小黑屋|AUTOIT CN ( 鲁ICP备19019924号-1 )谷歌 百度

GMT+8, 2024-12-28 00:59 , Processed in 0.142717 second(s), 25 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表