如何在同时创建多个快捷方式时强制 Windows 使用 %USERPROFILE%(或使用 AHK 实现相同的功能)?

如何在同时创建多个快捷方式时强制 Windows 使用 %USERPROFILE%(或使用 AHK 实现相同的功能)?

问题: 我在工作中使用 Dropbox,但同事无法跟踪我创建的快捷方式。附言:我在这里交替使用“快捷方式”(Windows 的称呼)和“别名”(Mac 的命名法)。

它不起作用的原因是快捷方式与我的特定用户文件夹绑定:(“C:\Users\MyUserFolderName\Company Dropbox...”)。

我可以手动编辑我创建的每个别名的属性部分,并将“C:\Users\MyUserFolderName”替换为“%USERPROFILE%”(例如:“%USERPROFILE%\Company Dropbox...”但是,这很乏味。

我经常想从多个文件创建别名,在这种情况下我必须打开每个文件并更改目标。我如何强制 Windows 自动用“%USERPROFILE%”替换我的用户文件夹?

或者,如果做不到这一点,如何使用 Autohotkey 创建右键菜单选项,以创建快捷方式并自动用“%USERPROFILE%”替换我的用户文件夹?

迄今为止的研究

  1. 我在看使用 Windows 快捷方式的相对路径。然而,得票最多的答案是使用一个名为“相对的“,并且该实用程序似乎没有使用%USERPROFILE%(而是使用“%windir%”。
  2. 我在看如何让 Excel 在外部工作簿链接中使用相对路径,但它没有解决别名创建过程的问题。

答案1

您可以尝试以下方法...

如果您在 AutoHotkey 中运行它,它只会停留并等待您打开您创建的快捷方式的属性。一旦它检测到您已打开Shortcut Properties,它就会检查路径是否包含 Windows 默认填充的硬编码用户配置文件路径,如果是,则会将硬编码路径替换为%USERPROFILE%

其用法是像平常一样创建快捷方式,然后打开要更新的每个快捷方式的属性框。由于更新过程相对简单,并且会自动保存新路径,因此这可能会减少当前进程的耗电量,即使它不是带有右键单击选项等的自定义 shell 扩展。

如果您发现需要暂时暂停脚本,您也可以在脚本运行时通过标准托盘菜单选项来执行此操作。

; Auto-replace shortcut links with %USERPROFILE%

SetTitleMatchMode, 2
EnvGet, myUserProfile, UserProfile
Loop {

    WinWaitActive, Shortcut Properties ahk_class #32770
    
    nowID:=WinExist("A") ; Save the ID of the current window for use below if needed
    
    ControlGetText, myTarget, Edit2
    If InStr(myTarget, myUserProfile) {
        
        newTarget := "%USERPROFILE%" . SubStr(myTarget, StrLen(myUserProfile)+1)
        ControlSetText, Edit2, %newTarget%
        
        ; hardcode this to False if you don't want the dialog box to auto-save
        If autoSave:=True    
            SendInput, {Enter}
        
        ToolTip, Successfully updated shortcut link to use UserProfile...
        Sleep 1500
        ToolTip
    }
    
    WinWaitNotActive, ahk_id %nowID%  ; don't re-execute immediately if we're not auto-saving

}

相关内容