Verknüpfungsadresse beim Kopieren an neuen Pfad anpassen

German support forum

Moderators: Hacker, Stefan2, white

Post Reply
AndreasB
Junior Member
Junior Member
Posts: 6
Joined: 2007-06-18, 13:08 UTC

Verknüpfungsadresse beim Kopieren an neuen Pfad anpassen

Post by *AndreasB »

Hallo,

beim Kopieren eines Verzeichnisses möchte ich gerne automatisch den Pfad der Verknüpfungsadresse ändern lassen.

Das Problem ergibt sich durch die starren (nicht-relativen) Pfade von Verknüpfungen unter Windows.

Das Netzlaufwerk "T" beinhaltet ein Verzeichnis, welches ich auf meinem Laptop mitnehmen will. Dazu kommt das Verzeichnis "von T:\Toll" (Netzlaufwerk) nach "C:\Toll" auf dem Laptop.

Das Problem ist nur, dass Verknüpfungen z.B.: im Unterordner

Code: Select all

"T:\Toll\TerminXYZ\KommentarvonBerta\E-MailvonBerta.msg"
auf die Originaldatei:

Code: Select all

"T:\Toll\AlleMails\E-MailvonBerta.msg" 
nun auf

Code: Select all

"C:\Toll\AlleMails\E-MailvonBerta.msg"
lauten müssen.


Da ich das gesamte Verzeichnis von "T:" auf "C:" kopiere bleibt die Ordnerstruktur vorhanden. Ich müsste "nur" sicherstellen, dass beim Kopieren rekursiv bei allen Verknüpfungen das "T:" durch ein "C:" ersetzt wird.

(Der Synchronisationsdienst von Windows scheidet übrigens aus, da dieser andere Probleme bereitet)

Lässt sich dies mit TotalCommander bewerkstelligen?

DANKE!,
Andreas
icfu
Power Member
Power Member
Posts: 6052
Joined: 2003-09-10, 18:33 UTC

Post by *icfu »

Automatisch nicht, aber Du kannst die Verknüpfungen anschließend halbautomatisch anpassen, jedenfalls geht das derzeit für den Pfad sowie den Kommentar. Das Feld "Ausführen in" kann derzeit nicht angepaßt werden, aber vielleicht legt Lefteous ja nach, wenn er das hier liest... ;)

Also, folgendes Plugin mußt Du installieren:
http://ghisler.ch/board/viewtopic.php?t=13009

Nach der Kopieraktion von T nach C suchst Du alle LNK-Dateien zusammen, beispielsweise per Suche oder Zweigansicht+Filter, markierst alle und rufst dann den Attribute-ändern-Dialog auf.

"Pluginattribute ändern" aktivieren, folgende Einstellungen machen und mit OK bestätigen:

Code: Select all

shortcut  Pfad          C[=shortcut.Pfad:2-]
shortcut  Beschreibung  C[=shortcut.Pfad:2-]
Wenn der Kommentar etwas anderes als den Pfad enthalten soll, selbstverständlich auf den unteren Schritt verzichten...

Icfu
Last edited by icfu on 2007-06-18, 14:58 UTC, edited 1 time in total.
This account is for sale
AndreasB
Junior Member
Junior Member
Posts: 6
Joined: 2007-06-18, 13:08 UTC

Post by *AndreasB »

NETT :-) In der Tat ein gangbarer Weg für mich!
Danke!

Liesse sich soetwas noch in eine Art Batch-Datei packen?

Dann könnten auch Kollegen soetwas nutzen - dafür muss es eben noch einfacher sein, so in der Art:

a) kopiere den Order
b) lasse Skript xy laufen...
c) alles ist gut ;)

Ich weiss, das sind gleich drei Wünsche auf einmal... ;)

Danke, Andreas
icfu
Power Member
Power Member
Posts: 6052
Joined: 2003-09-10, 18:33 UTC

Post by *icfu »

Mit AutoHotkey ließe sich das scripten, aber meine Lust dazu ist – gelinde gesagt – wenig ausgeprägt. ;)

Es gibt sicherlich ein Kommandozeilentool, das auf das Anpassen von Links spezialisiert ist und als Input lediglich ein Verzeichnis braucht und die Zielpartition. Das wäre deutlich eleganter...

Wenn mir was über den Weg laufen sollte...

Icfu
This account is for sale
AndreasB
Junior Member
Junior Member
Posts: 6
Joined: 2007-06-18, 13:08 UTC

Post by *AndreasB »

icfu wrote: Wenn mir was über den Weg laufen sollte...

Icfu

Dieser Weg liegt schon fruchtlos hinter mir :/
Jedenfalls scheine ich nicht die richtigen Suchbegriffe in Foren und Internetsuchmaschinen dafür gefunden zu haben, weil ich eben kein darauf spezialisiertes Tool gefunden habe...
User avatar
Dalai
Power Member
Power Member
Posts: 10018
Joined: 2005-01-28, 22:17 UTC
Location: Meiningen (Südthüringen)

Post by *Dalai »

AutoIt könnte hier als Alternative zu AutoHotkey benutzt werden.
Die Funktionen dafür wären FileCreateShortcut() (Erstellen der neuen Verknüpfung) und FileGetShortcut() (Auslesen der Details der existierenden Verknüpfungen).

Als Parameter des noch zu schreibenden Skripts würde ich die Eingangsverknüpfung und das neue LW benutzen.
Ein solches Skript lässt sich dann ganz einfach in einer Batch nutzen, mit immer neuen Dateien (FOR-Schleife z.B.).
Man kann diese AutoIt-Skripte also als Kommandozeilen-Tool "missbrauchen", wenn nötig.

So, ich denke, damit kannst du was anfangen.
Und: schau in die Hilfe von AutoIt, wenn du es damit versuchen willst, denn die ist _wirklich_ gut!
Ein Forum gibt's zwar auch noch, aber für diese simple Sache sollte die Hilfe genügen.

MfG Dalai


EDIT: Ich hab mal ein grobes Beispiel aufn Webspace bei DriveHQ geladen.
Quellcode AutoIt-Skript
Ausführbare Datei (EXE)

Das Ding braucht als 1. Parameter den vollen Pfad der Verknüpfung, als 2. Parameter reicht der Buchstabe des neuen Laufwerks.
Bitte erstmal mit unkritischen Dateien testen, denn die Verknüpfungen werden ersetzt (is ja das Gewollte).
Last edited by Dalai on 2007-06-19, 02:42 UTC, edited 1 time in total.
#101164 Personal licence
Ryzen 5 2600, 16 GiB RAM, ASUS Prime X370-A, Win7 x64

Plugins: Services2, Startups, CertificateInfo, SignatureInfo, LineBreakInfo - Download-Mirror
icfu
Power Member
Power Member
Posts: 6052
Joined: 2003-09-10, 18:33 UTC

Post by *icfu »

Jut, bevor AndreasB noch auf den dunklen Pfad der Macht geführt wird, hier auch ein AHK-Script. ;)

Speichern als egalwas.ahk, auf die Buttonbar ziehen und den Startpfad im neu entstandenen Icon entfernen (wichtig!). Nach Durchführung der Kopieraktion den Ordner T:\Toll betreten und den Button klicken.

Code: Select all

Loop, *.lnk, , 1
{
  FileGetShortcut, %A_LoopFileFullPath%, OutTarget, OutDir, OutArgs, OutDescription, OutIcon, OutIconNum, OutRunState
  StringReplace, OutTarget, OutTarget, C:\, T:\
  StringReplace, OutDir, OutDir, C:\, T:\
  StringReplace, OutDescription, OutDescription, C:\, T:\
  FileCreateShortcut, %OutTarget%, %A_LoopFileFullPath%, %OutDir%, %OutArgs%, %OutDescription%, %OutIcon%, , %OutIconNum%, %OutRunState%
}
Wenn die Buchstaben flexibel sein sollen, C:\ durch %1% ersetzen sowie T:\ durch %2% und die gewünschten Strings im Parameterfeld des Buttons mitgeben.

Hotkeys gehen auch hier verloren...

Icfu
This account is for sale
AndreasB
Junior Member
Junior Member
Posts: 6
Joined: 2007-06-18, 13:08 UTC

Post by *AndreasB »

Hallo,

Danke - AutoIt und Autokey sind ja sehr mächtig/umfangreich!

Ich habe nun erstmal das Skript geschnappt, die Laufwerksbuchstaben angepasst und durchlaufen lassen - klappt!

Das ist gut. Dafür erstmal ein grosses Danke!

Heute Nachmittag passe ich das dann mal an die "echten" Verzeichnisse an!

AndreasB
AndreasB
Junior Member
Junior Member
Posts: 6
Joined: 2007-06-18, 13:08 UTC

Exkurs zu Autohotkey

Post by *AndreasB »

icfu wrote:J

Code: Select all

Loop, *.lnk, , 1
{
  FileGetShortcut, %A_LoopFileFullPath%, OutTarget, OutDir, OutArgs, OutDescription, OutIcon, OutIconNum, OutRunState
  StringReplace, OutTarget, OutTarget, C:\, T:\
  StringReplace, OutDir, OutDir, C:\, T:\
  StringReplace, OutDescription, OutDescription, C:\, T:\
  FileCreateShortcut, %OutTarget%, %A_LoopFileFullPath%, %OutDir%, %OutArgs%, %OutDescription%, %OutIcon%, , %OutIconNum%, %OutRunState%
}
Wenn die Buchstaben flexibel sein sollen, C:\ durch %1% ersetzen sowie T:\ durch %2% und die gewünschten Strings im Parameterfeld des Buttons mitgeben.

Tja, also arbeite ich mich gerade in Autohotkey ein, um ein "besseres Nutzererlebnis" ;) zu erstellen.

Aufgrund der Tutorials dort habe ich nun folgende einfache Version "zusammengezimmert":

Code: Select all

MsgBox, 4, Pfadänderungswerkzeug , Achtung das Tool ändert bei Verknüpfungen (*.lnk)  rekursiv den Pfad von P: auf C:! Wollen Sie fortfahren ?
IfMsgBox, No, return

; Andernfalls hat der Benutzer YES gedrückt.

Progress, Off
Progress

Loop, *.lnk, , 1
{
  FileGetShortcut, %A_LoopFileFullPath%, OutTarget, OutDir, OutArgs, OutDescription, OutIcon, OutIconNum, OutRunState
  StringReplace, OutTarget, OutTarget, P:\, C:\
  StringReplace, OutDir, OutDir, P:\, C:\
  StringReplace, OutDescription, OutDescription, P:\, C:\
  FileCreateShortcut, %OutTarget%, %A_LoopFileFullPath%, %OutDir%, %OutArgs%, %OutDescription%, %OutIcon%, , %OutIconNum%, %OutRunState%
  
Progress, +10   
}
Progress, Off

MsgBox, Ich habe fertig!

Das mit dem "Progess" ist noch dahingestümpert und ersetze ich durch ein SPlashImage. Es soll nur angezeigt werden, dass der Rechner was tut :-)

Eine Frage hätte ich dann aber noch *g* Wie liessen sich die Laufwerksbuchstaben (die hier festverdrahtet sind) abhängig von einer Nutzereingabe machen? Sprich wie bekomme ich von der GUI her die Variable gefüllt, so dass diese im Loop-Abschnitt (durch %1% und %2%) richtig "gefüllt" wird...?

Danke! Ja ich weiss, dass wird nun Off-Topic zu TC, aber passt eben zu meinem Ursprungspost und euren Antworten...

Danke!
User avatar
Dalai
Power Member
Power Member
Posts: 10018
Joined: 2005-01-28, 22:17 UTC
Location: Meiningen (Südthüringen)

Post by *Dalai »

Eine Frage hätte ich dann aber noch *g* Wie liessen sich die Laufwerksbuchstaben (die hier festverdrahtet sind) abhängig von einer Nutzereingabe machen? Sprich wie bekomme ich von der GUI her die Variable gefüllt, so dass diese im Loop-Abschnitt (durch %1% und %2%) richtig "gefüllt" wird...?
Im AutoIt gibt's eine Funktion InputBox, die wird so oder ähnlich auch im AHK vorhanden sein.
Das Ergebnis der Funktion (=die Nutzereingabe) weist du dann einer Variable zu und benutzt diese in der Loop.
Danke! Ja ich weiss, dass wird nun Off-Topic zu TC, aber passt eben zu meinem Ursprungspost und euren Antworten...
Nö, ich find's nicht OffTopic, denn es gehört zu diesem Thema.

MfG Dalai
#101164 Personal licence
Ryzen 5 2600, 16 GiB RAM, ASUS Prime X370-A, Win7 x64

Plugins: Services2, Startups, CertificateInfo, SignatureInfo, LineBreakInfo - Download-Mirror
icfu
Power Member
Power Member
Posts: 6052
Joined: 2003-09-10, 18:33 UTC

Post by *icfu »

Wie liessen sich die Laufwerksbuchstaben (die hier festverdrahtet sind) abhängig von einer Nutzereingabe machen?
...indem Du ins Parameterfeld des Buttons ein Fragezeichen davor setzt, beispielsweise, dann kannst Du die Vorgabe ändern:

Code: Select all

Parameter: ?P:\ C:\
Eleganter, wie Dalai schon erwähnt hat, per InputBox.

Icfu
This account is for sale
AndreasB
Junior Member
Junior Member
Posts: 6
Joined: 2007-06-18, 13:08 UTC

Post by *AndreasB »

So, es ist vollbracht :-)

Dank eurer Hilfe (danke!) habe ich nun das Skript zusammengestellt. Dank "MsgBox" und "InputBox" werden die Laufwerksbuchstaben abgefragt.

Durch das ahk2exe-Werkzeug habe ich nun eine kleine zweckgebundene Miniapplikation, die ja "standalone" läuft.

So kann ich das hier intern weiternutzen lassen. Ein Problem gelöst.

:-)
Post Reply