【问题标题】:How to Use a Script to set a Shortcut Icon如何使用脚本设置快捷方式图标
【发布时间】:2017-04-21 22:41:37
【问题描述】:

我查看了几个有类似问题的网站,但没有一个适用于我的情况。据我所知,vbscript 是做我正在寻找的最好的方法,但我对 vbscript 的经验很少,不知道如何得到我想要的。我正在使用 Windows 10。

假设有一个名为Example 的快捷方式示例,位于F:\File\SubFile\。在SubFile 文件夹中还有更多文件夹F:\File\SubFile\PrgmFiles\Icons\。在Icons 中有一个文件Icon.ico。快捷方式Example 具有图标:Icon.ico。但是,文件夹SubFile 被移动到未知位置*\SubFile。快捷方式会丢失其图标,因为路径已更改,但图标的相对路径未更改。

我想知道的是如何制作一个脚本来获取当前位置*\SubFile,并将Icon.ico 应用于示例快捷方式。

【问题讨论】:

    标签: windows vbscript


    【解决方案1】:

    .lnk 文件可以存储其目标的相对路径,但不支持相对图标路径。

    它支持普通的绝对图标路径,并且可以选择用具有可扩展环境变量的路径覆盖该普通路径 (SLDF_HAS_EXP_ICON_SZ)。

    【讨论】:

    • 但这如何适用于我的情况?看来你说它只支持特定的路径。我正在寻找的是一种使用正在使用的脚本路径的方法,然后对其进行扩展。像批量一样:cd %~dp0\PrgmFiles\Icons,仅允许我编辑快捷方式的图标属性。
    • 图标路径无论如何都不是相对于.lnk的,不支持相对图标路径!
    • 所以……你的答案没有回答我的问题……那如果你不知道答案,为什么还要回答呢?
    • 你所做的只是陈述我已经知道的,以及我需要脚本来做什么......你只是重申了这个问题......
    • 根据this question .lnk 可以有一个相对路径,但是您必须自己编写代码,但它不适用于图标。
    【解决方案2】:

    当您/某人移动/修剪包含重要信息的路径时,这不是与编程相关的问题,也不是这里的主题。尽管如此:

    • 修复.lnk 文件中损坏的IconLocation 的第一步是识别它们。这个 PowerShell 脚本可以:

    $SearchRoot = 'C:\Users\UserName'
    $AllLnks = Get-ChildItem -Path $SearchRoot -Rec -Filter *.lnk -Force -EA 0
    $Wsh = New-Object -ComObject WScript.Shell
    ForEach ($Lnk in $AllLnks) {
        $LnkO = $Wsh.CreateShortcut($Lnk.FullName)
        if ($LnkO.IconLocation){
            $Icon = $LnkO.IconLocation.split(',')[0]
            if ($Icon){
                if (!(Test-Path $([System.Environment]::ExpandEnvironmentVariables($Icon) ) ) ){
                    $LnkO
                }
            }
        }
    }
    

    此处缺少图标文件的示例输出:

    FullName         : C:\Users\UserName\Desktop\Programm Links\Adobe Reader XI.lnk
    Arguments        :
    Description      :
    Hotkey           :
    IconLocation     : C:\Windows\Installer\{AC76BA86-7AD7-1031-7B44-AB0000000001}\SC_Reader.ico,0
    RelativePath     :
    TargetPath       : C:\Program Files (x86)\Adobe\Reader 11.0\Reader\AcroRd32.exe
    WindowStyle      : 1
    WorkingDirectory :
    
    FullName         : C:\Users\UserName\Desktop\Programm Links\IDLE (Python 3.4 GUI - 32 bit).lnk
    Arguments        : "C:\Program Files (x86)\Python\34\Lib\idlelib\idle.pyw"
    Description      :
    Hotkey           :
    IconLocation     : C:\WINDOWS\Installer\{CCD588A7-8D55-49F1-A30C-47FAB40889ED}\python_icon.exe,0
    RelativePath     :
    TargetPath       : C:\WINDOWS\Installer\{CCD588A7-8D55-49F1-A30C-47FAB40889ED}\python_icon.exe
    WindowStyle      : 1
    WorkingDirectory : C:\Program Files (x86)\Python\34\
    

    【讨论】:

    • 我只是给出了一个示例情况,所以我可以在未来的情况下使用代码,以及当前的情况。在导致我问这个问题的情况下,程序位于便携式驱动器上,当插入其他计算机时,驱动器的标签不同。比如在计算机 1 上是 X: 驱动器,而在计算机 2 上是 F: 驱动器。
    • 如果我去一个非编程网站问这个问题,人们不知道如何回答我的问题。他们会说,“什么是 vbscript?” “这是一个与编程相关的问题,这里是题外话!”当我正在寻找一个脚本来自动设置快捷方式图标的过程时,无论它的位置如何,我相信这需要一些编程技巧。
    • 如果有这个功能形式会很棒,这样人们就可以提供路径或文件名并获得结果。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-03-08
    • 1970-01-01
    • 2017-06-11
    • 1970-01-01
    • 2012-06-14
    • 2015-02-08
    相关资源
    最近更新 更多