Modifique la ubicación de destino del "acceso directo" en lotes en el sistema Windows

Tabla de contenido

Escriba y ejecute el archivo .ps1

Explicación del código (no es importante, se recomienda omitirlo)

reportar error

Resumir 


Cuando el archivo original del "atajo" se mueve a otra carpeta, pero el "atajo" no se actualiza a tiempo, el "atajo" deja de ser válido.

Podemos usar la herramienta PowerShell para modificar la ubicación inicial del "acceso directo" en lotes a una nueva ruta. Aplicable a la situación en la que el nombre del archivo no cambia, solo se cambia la ruta del archivo.

Escriba y ejecute el archivo .ps1

Cree un nuevo documento de texto e ingrese el siguiente contenido:

$shortcutFolder = "D:\111\新建文件夹\" # 指定快捷方式所在的文件夹路径
$oldStartPath = "D:\1\" # 指定旧的起始文件夹路径
$newStartPath = "D:\2023\" # 指定新的起始文件夹路径

Get-ChildItem -Path $shortcutFolder -Filter *.lnk -Recurse | ForEach-Object {
    $shell = New-Object -ComObject WScript.Shell
    $shortcut = $shell.CreateShortcut($_.FullName)
    if ($shortcut.TargetPath.StartsWith($oldStartPath)) {
        $newTargetPath = $newStartPath + $shortcut.TargetPath.Remove(0, $oldStartPath.Length)
        $shortcut.TargetPath = $newTargetPath
        $shortcut.Save()
        Write-Host "目标已更新:" $_.FullName
    }
}

El camino se modifica según la situación. `$oldStartPath` y `$newStartPath` en el código representan la ruta de inicio anterior y la ruta de inicio nueva que deben reemplazarse respectivamente. Recorremos el archivo de acceso directo y usamos el método `StartsWith()` para verificar si la ruta de destino comienza con la ruta de inicio anterior especificada y, de ser así, convertimos la nueva ruta de destino a `$newStartPath` más subcadenas que comienzan en la longitud de la cadena de ruta anterior y asígnela a `$shortcut.TargetPath`. Finalmente, guardamos el acceso directo actualizado y generamos una declaración "Write-Host" para indicar que la actualización se realizó correctamente.

Guárdelo como un archivo con el sufijo ".ps1", como "111.ps1". Abra PowerShell, ingrese ".\111.ps1" en la ruta "111.ps1" para ejecutar el archivo.

Explicación del código (no es importante, se recomienda omitirlo)

La explicación del código relevante proporcionada por GPT:

Aquí hay una explicación de cada parte del código:

```
$shortcutFolder = "D:\111\New Folder\" # Especifique la ruta de la carpeta donde se encuentra el acceso directo
$oldStartPath = "D:\1\" # Especifique la ruta de la carpeta de inicio anterior
$newStartPath = "D :\ 2023\" # Especifique la nueva
ruta de la carpeta inicial```

Estas tres líneas definen la ruta de la carpeta donde se deben actualizar los accesos directos, la ruta de la carpeta inicial anterior y la ruta de la carpeta inicial nueva. Reemplácelo según su situación real.

```
Get-ChildItem -Path $shortcutFolder -Filter *.lnk -Recurse | Para cada objeto { ```

El comando `Get-ChildItem` obtiene todos los archivos con la extensión `.lnk` (es decir, archivos de acceso directo) usando la ruta especificada `$shortcutFolder` y agrega el indicador `-Recurse` para recuperar archivos en subcarpetas. `|` canaliza la lista al comando `ForEach-Object` para su iteración.

```
    $shell = Nuevo-Objeto -ComObject WScript.Shell
    $shortcut = $shell.CreateShortcut($_.FullName)
```

Aquí creamos una instancia de objeto COM `WScript.Shell` y usamos el método `.CreateShortcut()` para abrir cada archivo de acceso directo.

```
    si ($shortcut.TargetPath.StartsWith($oldStartPath)) { ```

Esta línea de código utiliza el método `StartsWith()` para verificar si la ruta de destino señalada por el archivo de acceso directo comienza con la ruta de inicio anterior `$oldStartPath`. Si es así, entonces debemos actualizar esa ruta de destino.

```
        $newTargetPath = $newStartPath + $shortcut.TargetPath.Remove(0, $oldStartPath.Length)
```

Esta línea de código construye una nueva ruta de destino `$newTargetPath`. Combina la nueva ruta de inicio `$newStartPath` con la ruta de destino original `$shortcut.TargetPath` despojada de la longitud de la ruta de inicio anterior.

```
        $shortcut.TargetPath = $newTargetPath
        $shortcut.Save()
        Write-Host "Destino actualizado:" $_.FullName
```

Estas tres líneas de código asignan la nueva ruta de destino `$newTargetPath` a `$shortcut.TargetPath` y llaman al método `.Save()` para guardar el archivo de acceso directo actualizado. Finalmente, usamos la declaración de salida `Write-Host` para indicar qué archivos de acceso directo se actualizaron con la ruta de destino.

```
}
```

Esta línea de código finaliza el bloque `ForEach-Object`.

La función de todo el script es recorrer recursivamente todos los archivos con la extensión `.lnk` en `$shortcutFolder` y reemplazar la ruta de destino del acceso directo que apunta a la ruta de destino original `$oldStartPath` con la nueva ruta de destino `$newStartPath` más el resto de la ruta de destino original. Finalmente, guarde los atajos actualizados y genere una declaración que indique qué atajos se han actualizado con las rutas de destino.

reportar error

Para conocer los comandos de ejecución de PowerShell, los errores comunes y su manejo, consulte:

Errores comunes y manejo de los comandos de ejecución de PowerShell del sistema Windows - Blog de Weixin_56337147 - Blog de CSDN 

Resumir 

Escriba y ejecute el archivo .ps1 para lograr la modificación por lotes de la ubicación de destino del "acceso directo".

Supongo que te gusta

Origin blog.csdn.net/weixin_56337147/article/details/130701457
Recomendado
Clasificación