我有一种情况,位于%AppData%\Microsoft\Windows\Start Menu\Programs
文件夹和子文件夹中的快捷方式文件中的所有路径都指向不正确的驱动器号。这包括Target:值、Start In:值以及图标文件的所有路径。我想将它们全部更改X:\
为C:\
有几个正确指向,C:\
但只有少数几个。
这是我正在使用的代码。我可以更改TargetPath
但不能更改WorkingDirectory
值。我尝试删除第 20 行的注释,但这会产生关于$null
-valued 表达式的错误。我也尝试过复制该位,TargetPath
但WorkingDirectory
它没有改变:
$folder = "C:\Temp\Shortcuts"
[string]$from = "X:\"
[string]$to = "C:\"
$list = Get-ChildItem -Path $folder -Recurse | Where-Object { $_.Attributes -ne "Directory"} | select -ExpandProperty FullName
$obj = New-Object -ComObject WScript.Shell
ForEach($lnk in $list)
{
$obj = New-Object -ComObject WScript.Shell
$link = $obj.CreateShortcut($lnk)
[string]$path = $link.TargetPath
[string]$path = [string]$path.Replace($from.tostring(),$to.ToString())
# [string]$path = $link.WorkingDirectory
# [string]$path = [string]$path.Replace($from.tostring(),$to.ToString())
#If you need workingdirectory change please uncomment the below line.
#$link.WorkingDirectory = [string]$WorkingDirectory.Replace($from.tostring(),$to.ToString())
$link.TargetPath = [string]$path
$link.Save()
}