Windows系统批量修改“快捷方式”的目标位置

您所在的位置:网站首页 扩展名lnk Windows系统批量修改“快捷方式”的目标位置

Windows系统批量修改“快捷方式”的目标位置

2024-02-23 08:01| 来源: 网络整理| 查看: 265

以下是代码各部分的解释:

``` $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