我正在查看几个有类似问题的网站,但没有一个适用于我的情况。据我所知,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
应用于示例快捷方式。
答案 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\