Windows系统批量修改“快捷方式”的目标位置 |
您所在的位置:网站首页 › 扩展名lnk › Windows系统批量修改“快捷方式”的目标位置 |
以下是代码各部分的解释: ``` $shortcutFolder = "D:\111\新建文件夹\" # 指定快捷方式所在的文件夹路径 $oldStartPath = "D:\1\" # 指定旧的起始文件夹路径 $newStartPath = "D:\2023\" # 指定新的起始文件夹路径 ``` 这三行定义了需要更新的快捷方式所在的文件夹路径、旧的起始文件夹路径和新的起始文件夹路径。请根据你的实际情况进行替换。 ``` Get-ChildItem -Path $shortcutFolder -Filter *.lnk -Recurse | ForEach-Object { ``` `Get-ChildItem` 命令使用指定的 `$shortcutFolder` 路径获取所有扩展名为 `.lnk` 的文件(即快捷方式文件),并添加 `-Recurse` 标志以检索子文件夹中的文件。`|` 管道将该列表传递到 `ForEach-Object` 命令以进行迭代。 ``` $shell = New-Object -ComObject WScript.Shell $shortcut = $shell.CreateShortcut($_.FullName) ``` 这里我们创建了一个 `WScript.Shell` COM 对象实例并使用 `.CreateShortcut()` 方法打开每个快捷方式文件。 ``` if ($shortcut.TargetPath.StartsWith($oldStartPath)) { ``` 这行代码使用 `StartsWith()` 方法检查快捷方式文件指向的目标路径是否以旧起始路径 `$oldStartPath` 开头。如果它是,那么我们需要更新该目标路径。 ``` $newTargetPath = $newStartPath + $shortcut.TargetPath.Remove(0, $oldStartPath.Length) ``` 此行代码构建了新的目标路径 `$newTargetPath`。它将新起始路径 `$newStartPath` 与去除旧起始路径长度后的原始目标路径 `$shortcut.TargetPath` 组合而成。 ``` $shortcut.TargetPath = $newTargetPath $shortcut.Save() Write-Host "目标已更新:" $_.FullName ``` 这三行代码将新的目标路径 `$newTargetPath` 赋值给 `$shortcut.TargetPath` 并调用 `.Save()` 方法保存更新的快捷方式文件。最后,我们使用 `Write-Host` 输出语句来指示哪些快捷方式文件被更新了目标路径。 ``` } ``` 此行代码结束了 `ForEach-Object` 块。 整个脚本的作用是递归遍历 `$shortcutFolder` 中的所有扩展名为 `.lnk` 的文件,并将指向原始目标路径 `$oldStartPath` 的快捷方式目标路径替换为新的目标路径 `$newStartPath` 加上原始目标路径中剩余的部分。最后将更新后的快捷方式保存并输出语句,指示哪些快捷方式已被更新了目标路径。 |
今日新闻 |
推荐新闻 |
CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3 |