derwowusste
Goto Top

Windows Kontextmenü um "Create Shortcut and move" erweitern

Moin Kollegen.

Sicherlich gibt es hierfür ein spezielles Tool (Explorerersatz) - das würde ich auch nehmen, wenn es keinen anderen Weg gibt.

-> Der Explorer kennt ja den Eintrag "Verknüpfung erstellen", was im selben Ordner eine Verknüpfung erstellt - diesen Eintrag würde ich gerne kopieren und danach derart ändern, dass er mir die Datei nach Ordner X verschiebt und an alter Stelle eine Verknüpfung zum neuen Ort erstellt.

Hat das jemand in petto?

Content-ID: 668283

Url: https://administrator.de/contentid/668283

Ausgedruckt am: 22.11.2024 um 04:11 Uhr

150704
Lösung 150704 20.09.2024, aktualisiert am 23.09.2024 um 15:09:56 Uhr
Goto Top
Pack doch einfach eine Verknüpfung zu einem PowerShell Skript in den "SendTo" Ordner welches das abfackelt

Verknüpfung für den SendTo Ordner
powershell -EP Bypass -File "c:\Pfad\zum\skript.ps1" -destination "x:\ziel"  

Skript
param($destination)
$ErrorActionPreference = 'Stop'  
$wshshell = New-Object -COMObject WScript.Shell
foreach($filepath in $args){
    try{
        $targetpath = join-path $destination (split-Path $filepath -Leaf)
        move-item -LiteralPath $filepath -Destination $targetpath
        $sc = $WshShell.CreateShortcut("$filepath.lnk")  
        $sc.TargetPath = $targetpath
        $sc.Save()
    }catch{
        write-host "Error processing file '$filepath': $($_.Exception.Message)" -F Red  
    }
}
[void][System.Runtime.InteropServices.Marshal]::ReleaseComObject($wshshell)
DerWoWusste
DerWoWusste 20.09.2024 um 17:48:51 Uhr
Goto Top
Moin.

Hab ich probiert. Damit entsteht im Ziel nur ein Shortcut (%1) und die Datei bleibt wo sie ist, ohne dass im Quellverzeichnis ein Shortcut angelegt wird.
Habe ein pause ins Skript gepackt und sehe den Fehler
move-item : Cannot move item because the item at '%1' does not exist.  
150704
150704 20.09.2024 aktualisiert um 18:37:51 Uhr
Goto Top
Habe es noch angepasst das %1 kommt da nur hin wenn es eine Batch ist sorry...

Kannst natürlich auch nen Batchfile nehmen und das da rein schmeißen...
DerWoWusste
DerWoWusste 23.09.2024 um 14:55:19 Uhr
Goto Top
Fast.

Ein kleiner Fehler, den ich selbst gesehen habe:
In Zeile 6 muss es
$sc = $WshShell.CreateShortcut("$filepath.lnk")   
heißen, damit es wie gewünscht läuft.

Kannst Du mir noch dabei helfen, dass es auch bei Anwendung auf mehrere Dateien gleichzeitig funktioniert? Im Moment hört er bei Multiselekt nach einer Datei auf.

Danke
150704
150704 23.09.2024 aktualisiert um 15:05:43 Uhr
Goto Top
Ein kleiner Fehler, den ich selbst gesehen habe:
Upps copy n paste error, korrigiert.
dass es auch bei Anwendung auf mehrere Dateien gleichzeitig funktioniert?
Ist angepasst.
DerWoWusste
DerWoWusste 23.09.2024 um 15:23:51 Uhr
Goto Top
Ah, super!

Läuft, tut, was es soll, schließt aber dennoch mit der Fehlermeldung
Error processing file '-FilePath': Cannot move item because the item at '-FilePath' does not exist.  
Warum, überblicke ich gerade nicht.
150704
150704 23.09.2024 aktualisiert um 15:44:57 Uhr
Goto Top
Du musst die Powershell Zeile auch anpassen, die hatte ich ebenfalls geändert nicht nur das Skript face-wink.
DerWoWusste
DerWoWusste 23.09.2024 um 15:50:08 Uhr
Goto Top
Ah, das war mir entgangen.

Vielen Dank!