[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
返回列表 发帖
晚上,有时间再搞搞好不好,最好能分开备份,url一个文本,lnk一个文本,路径改到收藏夹"%HOMEPATH%\Favorites“,这样就有通用性了

TOP

回复 16# zhangop9


以后发帖求助,有什么需求最好在顶楼一次说完。
我帮忙写的代码不需要付钱。如果一定要给,请在微信群或QQ群发给大家吧。
【微信公众号、微信群、QQ群】http://bbs.bathome.net/thread-3473-1-1.html
【支持批处理之家,加入VIP会员!】http://bbs.bathome.net/thread-67716-1-1.html

TOP

本帖最后由 zhangop9 于 2011-9-10 21:08 编辑

不好意思,只是后来才想到这个方法能比较好的解决问题,以后想好再说,但是有时需求是慢慢才知道的,所以比较难搞一点,那个发在dos版的那个帖子可以删除的谢谢你的指正!

TOP

最后一次写,楼主自重,下不为例
  1. '备份部分
  2. Dim wsh,wshSysEnv,objLink,objUrl
  3. Dim objFSO,subFolders,subFolder,Folder,Files,File
  4. Dim strHOMEDRIVE,strHOMEPATH
  5. Dim strBackup,strLnkPath,strWorkingDirectory,strTargetPath
  6. Set wsh = CreateObject("WScript.Shell")
  7. Set wshSysEnv = wsh.Environment("Process")
  8. strHOMEDRIVE = wshSysEnv("HOMEDRIVE")
  9. strHOMEPATH = wshSysEnv("HOMEPATH")
  10. Set objFSO = CreateObject("Scripting.FileSystemObject")
  11. FindLinks(strHOMEDRIVE & strHOMEPATH & "\Favorites\链接")
  12. Set File = objFSO.CreateTextFile("BackUp_lnk.txt",True)
  13. File.Write strBackup
  14. File.Close
  15. strBackup = ""
  16. FindUrls(strHOMEDRIVE & strHOMEPATH & "\Favorites\链接")
  17. Set File = objFSO.CreateTextFile("BackUp_url.txt",True)
  18. File.Write strBackup
  19. File.Close
  20. Set wsh = Nothing
  21. Set wshSysEnv = Nothing
  22. Set objFSO = Nothing
  23. Set Folder = Nothing
  24. Set subFolders = Nothing
  25. Set Files = Nothing
  26. Set File = Nothing
  27. MsgBox "Backup Succeed!",,"TIPs"
  28. Sub FindLinks(strPath)
  29.   Set Folder = objFSO.GetFolder(strPath)
  30.   Set subFolders = Folder.subFolders
  31.   Set Files = Folder.Files
  32.   For Each File In Files
  33.         If LCase(objFSO.GetExtensionName(File.Path)) = "lnk" Then
  34.                 Set objLink = wsh.CreateShortcut(File.Path)
  35.                 strWorkingDirectory = objLink.WorkingDirectory
  36.                 strTargetPath = objLink.TargetPath
  37.                 strBackup = strBackup & _
  38.                         "LinkPath:" & File.Path & vbCrLf & _
  39.                         "LinkTargetPath:" & strTargetPath & vbCrLf & _
  40.                         "LinkWorkingDirectory:" & strWorkingDirectory _
  41.                         & vbCrLf & vbCrLf
  42.         End If
  43.   Next
  44.   For Each subFolder In subFolders
  45.       FindLinks(subFolder.Path)
  46.   Next
  47. End Sub
  48. Sub FindUrls(strPath)
  49.   Set Folder = objFSO.GetFolder(strPath)
  50.   Set subFolders = Folder.subFolders
  51.   Set Files = Folder.Files
  52.   For Each File In Files
  53.         If LCase(objFSO.GetExtensionName(File.Path)) = "url" Then
  54.                 Set objUrl = objFSO.OpenTextFile(File.Path,1)
  55. strBackup = strBackup & _
  56. objUrl.ReadAll & vbCrLf & _
  57. "#" & File.Path & vbCrLf & vbCrLf
  58. objUrl.Close
  59.         End If
  60.   Next
  61.   For Each subFolder In subFolders
  62.       FindUrls(subFolder.Path)
  63.   Next
  64. End Sub
复制代码
  1. '还原部分
  2. Dim wsh,objFSO,f,Folder,strTxtLine,ary,objLink,objUrl
  3. Dim strLnkPath,strWorkingDirectory,strTargetPath,strRestore
  4. set wsh = CreateObject("WScript.Shell")
  5. Set objFSO = CreateObject("Scripting.FileSystemObject")
  6. Set f = objFSO.OpenTextFile("BackUp_lnk.txt",1)
  7. While Not f.AtEndOfStream
  8.         strTxtLine = f.ReadLine
  9.         If strTxtLine <> "" Then
  10.                 ary = Split(strTxtLine,":",-1)
  11.                 ReDim Preserve ary(3)
  12.                 Select Case ary(0)
  13.                         Case "LinkPath"
  14.                                 strLnkPath = ary(1) & ":" & ary(2)
  15.                         Case "LinkTargetPath"
  16.                                 strTargetPath = ary(1) & ":" & ary(2)
  17.                         Case "LinkWorkingDirectory"
  18.                          If ary(2) <> "" Then
  19.                                 strWorkingDirectory = ary(1) & ":" & ary(2)
  20.                             End If
  21.                                 CreateLnk strLnkPath,strTargetPath,strWorkingDirectory
  22.                 End Select
  23.         End If
  24. Wend
  25. f.Close
  26. Set f = objFSO.OpenTextFile("BackUp_url.txt",1)
  27. While Not f.AtEndOfStream
  28. strTxtLine = f.ReadLine
  29. If Left(strTxtLine,1)="#" Then
  30. Folder = Left(strLnkPath,InStrRev(strLnkPath,"\"))
  31.         If Not objFSO.FolderExists(Folder) Then
  32.                 objFSO.CreateFolder Folder
  33.         End If
  34. Set objUrl = objFSO.CreateTextFile(Right(strTxtLine,Len(strTxtLine)-1),True)
  35. objUrl.Write strRestore
  36. objUrl.Close
  37. Else
  38. strRestore = strRestore & _
  39. strTxtLine & vbCrLf
  40. End If
  41. Wend
  42. f.Close
  43. Set wsh = Nothing
  44. Set objFSO = Nothing
  45. Set f= Nothing
  46. Set objUrl = Nothing
  47. MsgBox "Restore Succeed!",Tips
  48. Sub CreateLnk(strLnkPath,strTargetPath,strWorkingDirectory)
  49.         Folder = Left(strLnkPath,InStrRev(strLnkPath,"\"))
  50.         If Not objFSO.FolderExists(Folder) Then
  51.                 objFSO.CreateFolder Folder
  52.         End If
  53.         Set objLink = wsh.CreateShortcut(strLnkPath)
  54.         objLink.TargetPath = strTargetPath
  55.         objLink.WorkingDirectory = strWorkingDirectory
  56.         objLink.Save
  57.         Set objLink = Nothing
  58. End Sub
复制代码
1

评分人数

---学无止境---

TOP

规范性不错,可惜我今天早上才明白它的重要性,呵呵,又落后了
枫中残雪:风停了,我的心却在动,让我心中的寒意走向远方

TOP

19楼的代码“备份”没有问题,“还原”的代码有一点小问题,要先建目录才能还原。有一个备份文本为空的时候报错。

TOP

本帖最后由 broly 于 2011-9-16 19:18 编辑

还原部分(原来那个有地方顺序错了)
  1. '还原部分
  2. Dim wsh,objFSO,f,Folder,strTxtLine,ary,objLink,objUrl
  3. Dim strLnkPath,strWorkingDirectory,strTargetPath,strRestore
  4. set wsh = CreateObject("WScript.Shell")
  5. Set objFSO = CreateObject("Scripting.FileSystemObject")
  6. Set f = objFSO.OpenTextFile("BackUp_lnk.txt",1)
  7. While Not f.AtEndOfStream
  8.         strTxtLine = f.ReadLine
  9.         If strTxtLine <> "" Then
  10.                 ary = Split(strTxtLine,":",-1)
  11.                 ReDim Preserve ary(3)
  12.                 Select Case ary(0)
  13.                         Case "LinkPath"
  14.                                 strLnkPath = ary(1) & ":" & ary(2)
  15.                         Case "LinkTargetPath"
  16.                                 strTargetPath = ary(1) & ":" & ary(2)
  17.                         Case "LinkWorkingDirectory"
  18.                             If ary(2) <> "" Then
  19.                                 strWorkingDirectory = ary(1) & ":" & ary(2)
  20.                             End If
  21.                                 CreateLnk strLnkPath,strTargetPath,strWorkingDirectory
  22.                 End Select
  23.         End If
  24. Wend
  25. f.Close
  26. Set f = objFSO.OpenTextFile("BackUp_url.txt",1)
  27. While Not f.AtEndOfStream
  28.         strTxtLine = f.ReadLine
  29.         Folder = Left(strLnkPath,InStrRev(strLnkPath,"\"))
  30.         If Not objFSO.FolderExists(Folder) Then
  31.             objFSO.CreateFolder Folder
  32.         End If
  33.         If Left(strTxtLine,1)="#" Then
  34.                 Set objUrl = objFSO.CreateTextFile(Right(strTxtLine,Len(strTxtLine)-1),True)
  35.                 objUrl.Write strRestore
  36.                 objUrl.Close
  37.                 strRestore = ""
  38.         Else
  39.                 strRestore = strRestore & _
  40.                         strTxtLine & vbCrLf
  41.         End If
  42. Wend
  43. f.Close
  44. Set wsh = Nothing
  45. Set objFSO = Nothing
  46. Set f= Nothing
  47. Set objUrl = Nothing
  48. MsgBox "Restore Succeed!",Tips
  49. Sub CreateLnk(strLnkPath,strTargetPath,strWorkingDirectory)
  50.         Folder = Left(strLnkPath,InStrRev(strLnkPath,"\"))
  51.         If Not objFSO.FolderExists(Folder) Then
  52.                 objFSO.CreateFolder Folder
  53.         End If
  54.         Set objLink = wsh.CreateShortcut(strLnkPath)
  55.         objLink.TargetPath = strTargetPath
  56.         objLink.WorkingDirectory = strWorkingDirectory
  57.         objLink.Save
  58.         Set objLink = Nothing
  59. End Sub
复制代码
---学无止境---

TOP

lnk还原没有问题,url还原后都是打开一个网站的,就一个网站

TOP

回复 23# zhangop9


    sorry,已修正
---学无止境---

TOP

本帖最后由 zhangop9 于 2011-9-16 23:26 编辑

回复 24# broly
我的 链接文件夹下还有下一级目录,还原时还要新建目录结构如:选用软件、系统更新,不然就报错很不方便!!!!

LinkPath:\Personal\\Favorites\链接\系统更新\9.字体路径.bat.lnk
LinkTargetPath:D:\Personal\setup\字体路径.bat
LinkWorkingDirectory:D:\Personal\Adobe Reader V8\AdobeAcrobatReader

LinkPath:D:\Personal\Favorites\链接\选用软件\Foxit PDF Creator.lnk
LinkTargetPath:D:\Personal\pdf\Foxit PDF Creator 3.0.1.0109 x86\!)绿化.exe
LinkWorkingDirectory:D:\Personal\pdf\Foxit PDF Creator 3.0.1.0109 x86

LinkPath:D:\Personal\Favorites\链接\选用软件\开机映射网络磁盘批处理.lnk.lnk
LinkTargetPath:D:\Personal\自动登录脚本\自动登录网络共享盘\开机映射网络磁盘批处理.bat
LinkWorkingDirectory:D:\Personal\自动登录脚本\自动登录网络共享盘

LinkPath:D:\Personal\Favorites\链接\选用软件\快速定位注册表.vbs.lnk
LinkTargetPath:D:\Personal\自动登录脚本\安装脚本\快速定位注册表.vbs
LinkWorkingDirectory:D:\Personal\校时\网络校时

TOP

本帖最后由 zhangop9 于 2011-9-16 23:25 编辑

可以用了,谢谢,目录想想办法自己搞吧

TOP

其实,这个也可以用P来完成。当然有用WINRAR了,这方面的帮助,还是“百度或GOOGLE”一下比较好
关键字:WINRAR管理清除桌面文件或图标(绝对路径没有改变的情况下)
枫中残雪:风停了,我的心却在动,让我心中的寒意走向远方

TOP

返回列表