Verknüpfungen (*.LNK) durch Dateien ersetzen...
...oder die Erzeugung von realtiven Verknüpfungspfaden?
Guten Tag!
Nachdem ich fast das ganze Netz durchforstet habe und beim Googeln auf dieses Forum gestossen bin, in dem scheinbar professionellere Hilfe angeboten wird als in anderen Bereichen, versuche ich nun hier mein Glück.
Mein Problem:
In einem Hauptverzeichnis befinden sich Dateien.
In Unterverzeichnissen befinden sich Verknüpfungen auf die o.g. Dateien.
In der Eigenschaft der *.LNK-Datei wird das Ziel als absolute Pfadangabe angegeben.
Wenn ich nun das Hauptverzeichnis incl. aller Datein, Unterverzeichnisse und die darin enthaltenen Verknüpfungen auf CD brenne, funktionieren die Verknüpfungen nicht auf anderen Rechnern, in denen ich die CD einlese (da die gespeicherten Pfade nicht vorhanden sind).
Ursprünglich war ich auf der Suche nach einer Möglichkeit, die gespeicherten absoluten Pfadangaben (in der Zielangabe der *.LNK) durch relative Pfadangaben zu ersetzen. Das scheint leider nicht zu funktionieren
Zumindest habe ich im Netz nichts dergleichen finden können. Falls hier jemand dafür eine Lösung anbieten könnte, wäre ich wirklich sehr dankbar!
Da ich davon ausgehe, dass der eben genannte Lösungsansatz nicht funktionieren wird, habe ich mir alternativ noch folgende Verfahrensweise überlegt (und deshalb schreibe ich in diesem Forumsbereich):
Wie könnte man es bewerkstelligen, dass (mittels einer Routine) die Verknüpfungen durch die eigentlichen Dateien aus dem Hauptverzeichnis quasi überschrieben werden (ich benötige danach die Verknüpfungen ja eigentlich nicht mehr)?
Einzige Schwierigkeit dabei: Die Verknüpfungen heißen anders als die ursprünglichen Dateien und die überschreibenden Originaldateien müssen danach diesen Namen (der Verknüpfung) wieder erhalten.
Diese Geschichte manuell abzuarbeiten, käme einer Strafarbeit gleich. Anzahl Dateien plus deren Verknüpfungen: weit über 4000!
Für jede brauchbare Antwort wäre ich sehr dankbar!
Ach ja: Mein Betriebssystem ist WinXP.
Lieben Gruß!
Guten Tag!
Nachdem ich fast das ganze Netz durchforstet habe und beim Googeln auf dieses Forum gestossen bin, in dem scheinbar professionellere Hilfe angeboten wird als in anderen Bereichen, versuche ich nun hier mein Glück.
Mein Problem:
In einem Hauptverzeichnis befinden sich Dateien.
In Unterverzeichnissen befinden sich Verknüpfungen auf die o.g. Dateien.
In der Eigenschaft der *.LNK-Datei wird das Ziel als absolute Pfadangabe angegeben.
Wenn ich nun das Hauptverzeichnis incl. aller Datein, Unterverzeichnisse und die darin enthaltenen Verknüpfungen auf CD brenne, funktionieren die Verknüpfungen nicht auf anderen Rechnern, in denen ich die CD einlese (da die gespeicherten Pfade nicht vorhanden sind).
Ursprünglich war ich auf der Suche nach einer Möglichkeit, die gespeicherten absoluten Pfadangaben (in der Zielangabe der *.LNK) durch relative Pfadangaben zu ersetzen. Das scheint leider nicht zu funktionieren
Zumindest habe ich im Netz nichts dergleichen finden können. Falls hier jemand dafür eine Lösung anbieten könnte, wäre ich wirklich sehr dankbar!
Da ich davon ausgehe, dass der eben genannte Lösungsansatz nicht funktionieren wird, habe ich mir alternativ noch folgende Verfahrensweise überlegt (und deshalb schreibe ich in diesem Forumsbereich):
Wie könnte man es bewerkstelligen, dass (mittels einer Routine) die Verknüpfungen durch die eigentlichen Dateien aus dem Hauptverzeichnis quasi überschrieben werden (ich benötige danach die Verknüpfungen ja eigentlich nicht mehr)?
Einzige Schwierigkeit dabei: Die Verknüpfungen heißen anders als die ursprünglichen Dateien und die überschreibenden Originaldateien müssen danach diesen Namen (der Verknüpfung) wieder erhalten.
Diese Geschichte manuell abzuarbeiten, käme einer Strafarbeit gleich. Anzahl Dateien plus deren Verknüpfungen: weit über 4000!
Für jede brauchbare Antwort wäre ich sehr dankbar!
Ach ja: Mein Betriebssystem ist WinXP.
Lieben Gruß!
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 53424
Url: https://administrator.de/contentid/53424
Ausgedruckt am: 22.11.2024 um 20:11 Uhr
3 Kommentare
Neuester Kommentar
Hallo OneVoice73 und willkommen im Forum!
Was relative Verknüpfungspfade anlangt - leider auch bei mir Fehlanzeige ...
Das folgende VBScript erwartet als einziges Argument die Angabe des Pfades, in dem die Verknüpfungen gespeichert sind und versucht dann, alle Verknüpfungen durch die verknüpften Dateien zu ersetzen.
Der neue Name der kopierten Datei setzt sich aus dem Dateinamen der Verknüpfung und dem Dateityp der verknüpften Datei zusammen.
Das Script ist bisher nur oberflächlich getestet und weist auch nur ansatzweises Errorhandling (Parameterübergabe) auf ...
Grüße
bastla
Was relative Verknüpfungspfade anlangt - leider auch bei mir Fehlanzeige ...
Das folgende VBScript erwartet als einziges Argument die Angabe des Pfades, in dem die Verknüpfungen gespeichert sind und versucht dann, alle Verknüpfungen durch die verknüpften Dateien zu ersetzen.
Der neue Name der kopierten Datei setzt sich aus dem Dateinamen der Verknüpfung und dem Dateityp der verknüpften Datei zusammen.
'ReplaceLinks.vbs
If WScript.Arguments.Count < 1 Then
WScript.Echo "Kein Pfad übergeben!"
WScript.Quit(1)
End If
Pfad = WScript.Arguments(0)
Set fso = CreateObject("Scripting.FilesystemObject")
Set objShell= WScript.CreateObject("Wscript.Shell")
If Not fso.FolderExists(Pfad) Then
WScript.Echo "Pfad ungültig!"
WScript.Quit(1)
End If
If Right(Pfad, 1) <> "\" Then Pfad = Pfad & "\"
For Each Datei In fso.GetFolder(Pfad).Files
If LCase(Right(Datei.Name, 4)) = ".lnk" Then
Set objShortcut = objShell.CreateShortcut(Datei.Path)
Prog = objShortcut.TargetPath
If InstrRev(Prog, ".") Then
PName = Left(Datei.Name, Len(Datei.Name) - 4) & Mid(Prog, InstrRev(Prog, "."))
Else
PName = Left(Datei.Name, Len(Datei.Name) - 4)
End If
If fso.FileExists(Prog) Then
fso.CopyFile Prog, Pfad & PName
End If
Set objShortcut = Nothing
fso.DeleteFile(Datei.Path)
End If
Next
WScript.Echo "Fertig."
Grüße
bastla