修正论坛上网友发的收藏夹备份助手,修正后可正常编译使用
本帖最后由 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 = 1 And $Cmdline = "/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 挺幸福的。楼主。 挺幸福的。楼主。
有了7z.exe就完美了
页:
[1]