Anzeige

Am Puls von Microsoft

Anzeige

[gelöst] Die Pfade aller Link-Dateien ändern

hajosch

hajosch
Hallo,

ein umfangreicher, verknüpfter Dateibestand wurde in einen anderen Ordner verschoben.
Ich möchte in einem Rutsch die Pfade aller Link-Dateien mit dem neuen Verzeichnis des Verknüpfungszieles versehen.

Gruß hajosch
 
Anzeige
Das Tool 'pcwLinkfix', früher von der PCWelt veröffentlicht, erledigt diese Arbeit 'in einem Rutsch'.
Es ist leider nur unter Win 7 lauffähig.

Gruß hajosch
 
Hallo IngoBingo,

längeres Versuchen hat nicht zum Erfolg geführt, da ich über null Kenntnisse in der PowerShell-Scriptsprache verfüge.

Könntest Du mir die erforderlichen Parameter in das Script 'modLink.ps1' einstellen?

Ich möchte alle Verknüpfungen im Ordner H:\temp (einschließlich Unterordner) von Z:\Tools nach H:\Tools umstellen.

Vorab vielen Dank
Gruß hajosch
 
Du änderst folgende Zeilen des Scripts ab:

$fileName ="*.lnk"
$folder = "H:\Temp"
[string]$from = "Z:\Tools"
[string]$to = "H:\Tools"
 
Hallo IngoBingo,

wer den kleinen Finger reicht!;

wie kann ich mir alle Verknüpfungen in einem Ordner und seinen Unterordnern anzeigen lassen?

Vorab vielen Dank
Gruß hajosch
 
Kein Thema. Wenn ich dich richtig verstehe:

Get-ChildItem -Path C:\Users -Filter *.lnk -Recurse

Durchsucht dann C:\Users und alles darunter nach *.lnk.
 
Hallo IngoBingo,

Danke, das funktioniert, aber es sollen nicht die .lnk-Dateien, sondern die Zielpfade der Verknüpfungen ausgegeben werden, damit ich gezielt unterschiedliche Ziele ermitteln und mit der Prozedur unter Beitrag #4 bearbeiten kann.
Vorab vielen Dank
Gruß hajosch
 
Dann müsste man das Script eigentlich nur etwas einkürzen um die Funktionen zum Bearbeiten der Links.
Das sähe dann so aus:

$fileName ="*.lnk"
$folder = "C:\Users"
$list = Get-ChildItem -Path $folder -Filter $fileName -Recurse | Where-Object { $_.Attributes -ne "Directory"} | select -ExpandProperty FullName

ForEach($lnk in $list)
{
$obj = New-Object -ComObject WScript.Shell
$link = $obj.CreateShortcut($lnk)
Write-Host $lnk -> $link.TargetPath
}
 
Hallo IngoBingo,
excellent!
Vielen Dank für die Unterstützung.
Jetzt werde ich noch versuchen, die Ausgabe zu formatieren: alle Zielangaben untereinander zu schreiben.
Um Dich nicht über Gebühr zu strapazieren, werde ich das in Word vornehmen.
Vielen Dank
Gruß hajosch
 
Hallo IngoBingo,
das mit Word war keine gute Idee.
Würdest Du mir die Prozedur so abändern, dass nur die Zielpfade der Verknüpfungen ausgegeben werden.
Vielen Dank
Gruß hajosch
 
Hast du mal probiert, das Script selber genau anzuschauen? Manchmal fällt einem dann ja schon auf, wie sowas funktioniert.

Die "Write-Host" Zeile gibt momentan den Inhalt von den Variablen $lnk (den Ordnernamen) sowie der Variablen $link.TargetPath (das Ziel des Links) aus sowie den Pfeil dazwischen. Wenn du einfach die Dinge löscht, die du nicht sehen willst, kommst du da schnell zum Ziel.

Write-Host $link.TargetPath

...würde an der Stelle halt nur die Link-Ziele ausgeben.
 
Hallo IngoBingo,
"Manchmal fällt einem dann ja schon auf, wie sowas funktioniert."
Script-Schreibweisen können es in sich haben.
In anderen Sprachen würde '>' als Literal in Hochkomma gesetzt; deshalb konnte ich diese Zeile nicht auflösen.
Nochmals vielen Dank
Gruß hajosch
 
Anzeige
Oben