找回密码
 注册
搜索
[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
楼主: zhangop9

[问题求助] [已解决]“求恢复链接文件夹的快捷方式”备份已由版主写好了,代码在15楼。

[复制链接]
 楼主| 发表于 2011-9-10 18:23:16 | 显示全部楼层
晚上,有时间再搞搞好不好,最好能分开备份,url一个文本,lnk一个文本,路径改到收藏夹"%HOMEPATH%\Favorites“,这样就有通用性了
发表于 2011-9-10 19:22:38 | 显示全部楼层
回复 16# zhangop9


以后发帖求助,有什么需求最好在顶楼一次说完。
 楼主| 发表于 2011-9-10 20:59:53 | 显示全部楼层
本帖最后由 zhangop9 于 2011-9-10 21:08 编辑

不好意思,只是后来才想到这个方法能比较好的解决问题,以后想好再说,但是有时需求是慢慢才知道的,所以比较难搞一点,那个发在dos版的那个帖子可以删除的谢谢你的指正!
发表于 2011-9-15 23:12:29 | 显示全部楼层
最后一次写,楼主自重,下不为例
  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技术 +1 收起 理由
wc726842270 + 1 学习了

查看全部评分

发表于 2011-9-15 23:48:39 | 显示全部楼层
规范性不错,可惜我今天早上才明白它的重要性,呵呵,又落后了
 楼主| 发表于 2011-9-16 11:27:57 | 显示全部楼层
19楼的代码“备份”没有问题,“还原”的代码有一点小问题,要先建目录才能还原。有一个备份文本为空的时候报错。
发表于 2011-9-16 12:23:15 | 显示全部楼层
本帖最后由 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
复制代码
 楼主| 发表于 2011-9-16 19:00:38 | 显示全部楼层
lnk还原没有问题,url还原后都是打开一个网站的,就一个网站
发表于 2011-9-16 19:19:05 | 显示全部楼层
回复 23# zhangop9


    sorry,已修正
 楼主| 发表于 2011-9-16 19:29:14 | 显示全部楼层
本帖最后由 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\校时\网络校时
 楼主| 发表于 2011-9-16 19:32:21 | 显示全部楼层
本帖最后由 zhangop9 于 2011-9-16 23:25 编辑

可以用了,谢谢,目录想想办法自己搞吧
发表于 2011-9-23 11:59:53 | 显示全部楼层
其实,这个也可以用P来完成。当然有用WINRAR了,这方面的帮助,还是“百度或GOOGLE”一下比较好
关键字:WINRAR管理清除桌面文件或图标(绝对路径没有改变的情况下)
您需要登录后才可以回帖 登录 | 注册

本版积分规则

Archiver|手机版|小黑屋|批处理之家 ( 渝ICP备10000708号 )

GMT+8, 2026-3-16 23:16 , Processed in 0.022344 second(s), 8 queries , File On.

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

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