如何使用脚本设置快捷方式图标

时间:2017-04-21 22:41:37

标签: windows vbscript

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

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

我想知道的是如何创建一个脚本,将其当前位置*\SubFileIcon.ico应用于示例快捷方式。

2 个答案:

答案 0 :(得分:0)

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

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

答案 1 :(得分:0)

当你/某人移动/修剪一条包含重要信息的路径时,这不是一个与编程有关的问题,而不是这里的主题。不过:

  • 修复.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\