Shell vbs脚本,用于更改在7中工作但在XP中不工作的快捷方式
我正在尝试编写一个脚本来更新WinXP和Win7(32位和64位)中的桌面快捷方式。我有两个问题,在XP中,快捷方式的目标路径不会改变,在XP和7中,快捷方式的“开始”部分不会改变。这里出了什么问题,我该如何纠正Shell vbs脚本,用于更改在7中工作但在XP中不工作的快捷方式,shell,vbscript,windows-xp,shortcut,Shell,Vbscript,Windows Xp,Shortcut,我正在尝试编写一个脚本来更新WinXP和Win7(32位和64位)中的桌面快捷方式。我有两个问题,在XP中,快捷方式的目标路径不会改变,在XP和7中,快捷方式的“开始”部分不会改变。这里出了什么问题,我该如何纠正 If InStr(GetWindowsVer(), "XP") > 0 then IterateFolder("C:\Documents and Settings\") Elseif InStr(GetWindowsVer(), "7") > 0 then
If InStr(GetWindowsVer(), "XP") > 0 then
IterateFolder("C:\Documents and Settings\")
Elseif InStr(GetWindowsVer(), "7") > 0 then
IterateFolder("C:\Users\")
End if
Sub IterateFolder(folderPath)
Dim strFolderToSearch, objFSO, objRootFolder, objFolder, colSubfolders, strOutput, subFolder
strFolderToSearch = folderPath
Set objFSO = CreateObject("Scripting.FileSystemObject")
Set objRootFolder = objFSO.GetFolder(strFolderToSearch)
Set colSubfolders = objRootFolder.SubFolders
For Each objFolder in colSubfolders
subFolder = objFolder.Path & "\Desktop"
Set objFSO1 = CreateObject("Scripting.FileSystemObject")
Set objFolder1 = objFSO.GetFolder(subFolder)
Set colFiles = objFolder1.Files
For Each objFile in colFiles
If strcomp(right(objFile.name,4),".lnk",vbTexctCompare) = 0 then
Set Shell = CreateObject("WScript.Shell")
Set Link = Shell.CreateShortcut(objFile.Path)
if instr(Link.TargetPath, "Office") > 0 then
strOutput = objFile.Path
strOutput = strOutput & vbCr & vbLf & Link.TargetPath
strOutput = strOutput & vbCr & vbLf & Link.WorkingDirectory
MsgBox strOutput 'This line returns expected data'
Link.TargetPath = Replace(Link.TargetPath, "Office11", "Office14"
if GetBits = "64" Then
Link.TargetPath = Replace(Link.TargetPath, "Program Files\", "Program Files (x86)\")
End if
Link.WorkingDirectory = Replace(Link.WorkingDirectory, "Office11", "Office14")
Link.Save
End if
End if
Next
Next
End Sub
代码执行的正是我告诉它的操作,vbs替换函数中使用的默认比较方法是二进制的,区分大小写。由于某些原因,快捷方式中的路径不区分大小写。我通过在replace语句的末尾添加
,1,-1,1
来添加用于执行vbTextCompare的选项,因此它们现在看起来如下所示:
Link.TargetPath = Replace(Link.TargetPath, "Office14", "Office99", 1, -1, 1)
因此,它现在将Office14替换为Office99,而不考虑案例。我在XP中的目标路径和在7中的工作目录现在都在改变