Windows Verknüpfung (lnk) in Symlink umwandeln
Auf einem Windows PC soll zusätzlich Linux installiert werden.
Das ist kein Problem.
Jedoch sind auf der Datenplatte dieses Computers viele Verknüpfungen (LNK) für Dateien vorhanden.
Diese Links erkennt jedoch nur Windows und kein Linux.
Softlinks für Dateien würden sowohl von Windows, als auch von Linux erkannt werden.
Gibt es eine Möglichkeit, mittels eines Scripts (Batch oder VBA) für alle vorhandenen Verknüpfungen einen Softlink zu erstellen, und danach die Verknüpfung zu löschen?
Danke im voraus
Gerry
Das ist kein Problem.
Jedoch sind auf der Datenplatte dieses Computers viele Verknüpfungen (LNK) für Dateien vorhanden.
Diese Links erkennt jedoch nur Windows und kein Linux.
Softlinks für Dateien würden sowohl von Windows, als auch von Linux erkannt werden.
Gibt es eine Möglichkeit, mittels eines Scripts (Batch oder VBA) für alle vorhandenen Verknüpfungen einen Softlink zu erstellen, und danach die Verknüpfung zu löschen?
Danke im voraus
Gerry
Please also mark the comments that contributed to the solution of the article
Content-ID: 671094
Url: https://administrator.de/forum/windows-verknuepfung-lnk-in-symlink-umwandeln-671094.html
Printed on: February 9, 2025 at 07:02 o'clock
6 Comments
Latest comment
Moin,
hier hat das jemand schon mal komplett umgesetzt: Convert .lnk shortcut to symlink.
Gruß
DivideByZero
hier hat das jemand schon mal komplett umgesetzt: Convert .lnk shortcut to symlink.
Gruß
DivideByZero

Lässt sich auch schnell selbst mit der Powershell Bordmitteln abfackeln
Wenn es unbedingt noch VBA sein muss geht auch das
Gruß goldcap
$folder = 'D:\QuellOrdner'
$shell = New-Object -Com Wscript.Shell
$ErrorActionPreference = 'Stop'
foreach($file in Get-Childitem -LiteralPath $folder -File -Filter *.lnk -Recurse){
try{
$lnk = $shell.CreateShortcut($file.Fullname)
New-Item -ItemType SymbolicLink -Path (join-path (split-path $file.Fullname -Parent) (split-path $lnk.TargetPath -Leaf)) -Value $lnk.TargetPath
Remove-Item -LiteralPath $file.Fullname -Force
}catch{
write-host "Fehler bei Verarbeitung des Links '$($file.Fullname)' : $($_.Exception.Message)" -F Red
}
}
Wenn es unbedingt noch VBA sein muss geht auch das
Dim fso, shell
' Pfad anpassen und diese Prozedur starten
Sub ConvertToSymbolicLinks()
Const folder = "D:\Quellordner"
Set fso = CreateObject("Scripting.Filesystemobject")
Set shell = CreateObject("Wscript.Shell")
RecurseFolder fso.GetFolder(folder), True
End Sub
Function RecurseFolder(strFldr, boolRecursion)
For Each file In strFldr.Files
If LCase(fso.GetExtensionName(file.Path)) = "lnk" Then
Set lnk = shell.CreateShortcut(file.Path)
shell.Run "cmd /c mklink """ & fso.GetParentFolderName(lnk.FullName) & "\" & fso.GetFileName(lnk.TargetPath) & """ """ & lnk.TargetPath & """", 0, True
file.Delete True
End If
Next
If boolRecursion Then
For Each subFolder In strFldr.SubFolders
RecurseFolder subFolder, True
Next
End If
End Function