在 Windows 中将快捷方式批量转换为相对快捷方式

在 Windows 中将快捷方式批量转换为相对快捷方式

我一直在使用这个实用程序相对的因为我知道,所以可以更快地创建相对快捷方式。问题是我的驱动器上有很多旧的快捷方式,我想转换它们,而不必一个接一个地重新创建它们。是否有任何实用程序允许这样做?如果有一个解决方案需要我一个接一个地选择它们,那就没问题了。这还可以解决 Windows 的问题,它有时会破坏正常快捷方式中曾经编程的路径,然后要求您查找路径中的错误...

答案1

我想出了一个快速的 VBScript 来批量更改快捷方式目标。它调用Relative.exe并覆盖现有的快捷方式,将目标更改为相对路径。

笔记:继续操作之前,请备份您的原始快捷方式。务必先使用示例文件进行测试。

(如果程序安装在其他位置,请更新脚本第 9 行中的 Relative.exe 路径。)

Option Explicit
If WScript.Arguments.Count = 0  Then WScript.Quit
Dim WshShell, WshShortcut, sAppPath, oFSO, sCmd
Dim sSrcFile, sTarget, sArgs, sWStyle, sHotkey, sSkipped, i
Set WshShell = CreateObject ("WScript.Shell")
Set oFSO =  CreateObject ("Scripting.FileSystemObject")
sSkipped = "List of shortcuts skipped:" & vbCrLf  & vbCrLf

sAppPath = """" & "C:\Program Files (x86)\Relative\Relative.exe" & """"

For i = 0 To WScript.Arguments.Count - 1 
   sSrcFile = WScript.Arguments(i)   
   If LCase(Right(sSrcFile, 4)) <> ".lnk" Then Exit For
   
   'Get shortcut properties
   Set WshShortcut = WshShell.CreateShortcut(sSrcFile)
   sTarget = WshShortcut.TargetPath
   sWStyle = WshShortcut.WindowStyle
   sArgs = WshShortcut.Arguments
   sHotkey = WshShortcut.Hotkey
   
   'Skip if target has the .exe suffix, or the target is a File
   If InStr(sTarget, ".exe") > 0 Or oFSO.FileExists (sTarget) Then
      sTarget = ""
   End If

   'Skip if target is already in relative path format
   If InStr(sTarget, ".\") = 0 And Trim(sTarget) <> "" Then
      'Run Relative.exe and overwrite existing shortcut
      sCmd = sAppPath & " " & sTarget & " " & """" & _
        Replace(sSrcFile, ".lnk", "") & """"
      WshShell.Run sCmd,1, 1    
      
      'Restore shortcut Hotkey and Window style setting
      WScript.Sleep 500
      Set WshShortcut = WshShell.CreateShortcut(sSrcFile)
      WshShortcut.WindowStyle = sWStyle
      If sHotkey <> "" Then WshShortcut.Hotkey = sHotkey
      WshShortcut.Save
   Else
      sSkipped = sSkipped & sSrcFile & vbCrLf
   End If
   
Next

If Len (sSkipped) > 32 Then WScript.Echo sSkipped

指示

  1. 将以上代码复制到记事本并保存为ToRelative.vbs
  2. 打开您的Sendto文件夹(提示:shell:sendto在“开始/运行”中运行。)
  3. 将脚本的快捷方式放在 SendTo 文件夹中。
  4. 右键单击一组.lnk 文件,单击“发送到”,然后 ToRelative在“发送到”菜单中选择。

相关内容