通用备份还原脚本

以前一直使用SyncbackPro备份还原Everything,Listary等软件的配置文件。

存在以下缺点,就考虑自己写一个脚本来进行备份还原。

1. SyncbackPro作为专业软件功能强大,但是随之而来的就是配置麻烦,打开运行缓慢;

2. SyncbackPro会比较文件的修改日期,修改日期较新的不会覆盖旧的,这个设计在备份还原很多文件的时候都是正确的。但是Listary等程序对配置文件的修改是实时的,在还原的时候就不会将你想要还原的配置文件还原。

脚本分享如下:

  1. #Requires AutoHotkey v2.0
  2. /*
  3. 脚本会自动判断路径是文件还是文件夹,
  4. 文件夹会复制覆盖目录下的所有文件,
  5. 文件则直接复制覆盖。
  6. 脚本没有进行文件比较,不适用于大规模、大文件的备份还原,
  7. 如果有需要推荐使用SyncbackPro等专业软件进行,
  8. 仅适合软件的配置及数据文件进行备份。
  9. 脚本支持备份还原双模式,
  10. 需要使用备份模式,运行时需要加入命令行参数 "backup"
  11. 需要使用还原模式,运行时需要加入命令行参数 "restore"
  12. */
  13. source := "C:\Program Files\Everything" ;源文件路径
  14. target := "D:\Settings\EveryThing设置" ;备份目标路径
  15. porcessPath := "" ;目标程序的路径,如果该配置不为空,则在备份还原以前会关闭目标进程,完成后再运行
  16. list :=["\Everything.ico", ;需要备份还原的文件列表,相当于备份软件中的过滤器/筛选列表。PS:不要忘记前面的\
  17. "\Everything.ini",
  18. "\Filters.csv",
  19. "\IbEverythingExt",
  20. "\WindowsCodecs.dll"
  21. ]
  22. /*
  23. 以下为脚本的主要逻辑,一般情况下不需要修改
  24. */
  25. ; 备份模式
  26. if(A_Args[1] = "backup"){
  27. backMode()
  28. }
  29. else if(A_Args[1] = "restore"){
  30. restoreMode()
  31. }
  32. else{
  33. MsgBox("输入的命令行参数错误,请检查。")
  34. }
  35. ; 备份模式
  36. backMode(){
  37. ; 关闭指定进程
  38. if(porcessPath != ""){
  39. pathArray := SubStr(porcessPath,"\")
  40. ProcessClose(pathArray[-1])
  41. Sleep(3000)
  42. }
  43. for index,element in list {
  44. sourcePath := source . element
  45. targetPath := target . element
  46. if( isFileOrFolder(sourcePath) = "folder"){
  47. DirCopy(sourcePath,targetPath,1)
  48. }
  49. else{
  50. FileCopy(sourcePath,targetPath,1)
  51. }
  52. Sleep(100)
  53. }
  54. ; 运行指定程序
  55. if(porcessPath != ""){
  56. Run(porcessPath)
  57. }
  58. }
  59. ; 还原模式
  60. restoreMode(){
  61. ; 关闭指定进程
  62. if(porcessPath != ""){
  63. pathArray := SubStr(porcessPath,"\")
  64. ProcessClose(pathArray[-1])
  65. Sleep(3000)
  66. }
  67. for index,element in list {
  68. sourcePath := source . element
  69. targetPath := target . element
  70. if( isFileOrFolder(sourcePath) = "folder"){
  71. DirCopy(targetPath,sourcePath,1)
  72. }
  73. else{
  74. FileCopy(targetPath,sourcePath,1)
  75. }
  76. Sleep(100)
  77. }
  78. ; 运行指定程序
  79. if(porcessPath != ""){
  80. Run(porcessPath)
  81. }
  82. }
  83. ; 判断路径是目录还是文件
  84. isFileOrFolder(path){
  85. pathAttr := FileExist(path)
  86. if(pathAttr == ""){
  87. MsgBox(path . "路径不存在")
  88. }
  89. else if(InStr(pathAttr,"D")){
  90. return "folder"
  91. }
  92. else {
  93. return "file"
  94. }
  95. }
声明:本站所有文章,如无特殊说明或标注,均为本站原创发布。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。
应用

【游戏】正义守护者

2024-3-19 18:52:12

其他教程

AutoLoginWindows 开机时自动登录到Windows桌面 2024年4月11日

2024-4-11 8:02:39

0 条回复 A文章作者 M管理员
欢迎您,新朋友,感谢参与互动!
    暂无讨论,说说你的看法吧
个人中心
购物车
优惠劵
私信列表
搜索