Kopieren von Dateien, auf die verwiesen wird (nicht die Verknüpfungsdateien selbst)

8

Ich habe einen Ordner mit Verknüpfungen, die auf Dateien verweisen, die sich in verschiedenen Verzeichnissen und Laufwerken befinden. Ich möchte die Dateien, auf die verwiesen wird (NICHT die Verknüpfungsdateien selbst), in einen einzelnen Zielordner kopieren.

Gibt es eine Möglichkeit in Windows (XP, Vista, 7), im Dateimanager oder in einem Dienstprogramm, mit dem ich dies tun kann?

Ich habe gehört, dass Sie dies mit verschiedenen mehrstufigen benutzerdefinierten Skripten tun können. Ich habe jedoch Gerüchte gehört, dass es einen Ein-Klick-Weg gibt, dies zu tun, ohne jedes Mal ein benutzerdefiniertes Skript erstellen zu müssen. Unabhängig davon, wohin die Verknüpfungen verweisen, kann ich die Gruppe der Verknüpfungen auswählen und einen Kopiervorgang ausführen, der die Funktion übernimmt Dateien, auf die sie zeigen. Dann kann ich die tatsächlichen Dateien (keine Verknüpfungen) in ein Verzeichnis einfügen oder auf andere Weise ablegen.

Es wäre sehr zeitaufwändig, jede Datei, auf die durch eine Verknüpfung verwiesen wird, manuell zu finden und einzeln in den Zielordner zu kopieren.

Beachten Sie, dass ich diese Frage bereits im Internet gesehen habe, aber keine gute Antwort gefunden habe.

Ivo Bosticky
quelle
Verwenden Sie das Copylinktarget-Plugin für Total Commander.

Antworten:

4

Ich denke, die Antwort ist nein, weil eine Verknüpfung nicht wirklich ein symbolischer Link ist, wie es unter Linux der Fall ist. Das Konzept der symbolischen Verknüpfung wurde als Teil von NTFS 5.0 eingeführt, gilt jedoch für Verzeichnisse und nicht für Dateien. In Windows 7 haben sich die Dinge möglicherweise geändert. Ich gebe zu, dass ich dort keine Ahnung habe. Shell-schockiert hat einen guten Artikel über Windows Symbolic und Hard Links.

Es wäre cool, sich in diesem Fall als falsch zu erweisen, denn dies ist ein Problem, für das ich gerne eine Lösung bei der Arbeit hätte!

DaveParillo
quelle
Windows .lnk-Dateien ähneln Linux .desktop-Dateien, nicht wahr?
Petersohn
4

Ich habe eine sehr einfache Methode zum Kopieren der Dateien gefunden, auf die Verknüpfungen verweisen, und nicht auf die Verknüpfungen selbst:
Fügen Sie die Auswahl der Verknüpfungen zu ZIP hinzu (über die Shell-Erweiterung). Dann werden die Originaldateien automatisch komprimiert und nicht die Verknüpfungen.
Durch Extrahieren des Inhalts der ZIP-Datei an einen Ort Ihrer Wahl wird die Aufgabe perfekt und schnell erledigt.

HGo
quelle
1
Funktioniert unter Windows 8 nicht mit mir, zumindest mit dem in das Betriebssystem integrierten Verfahren zum Erstellen von ZIP-Dateien: Klicken Sie mit der rechten Maustaste auf> Senden an> "Komprimierter (komprimierter) Ordner".
Peterflynn
Dies funktioniert, wenn die Links mit "mklink / J" erstellt werden.
Albion
2

Sie können auch den Filemanager Total Commander und das Plugin CopyLinkTarget verwenden, um die Linkziele sehr einfach zu kopieren.

McKensy
quelle
1

Als alternative Problemumgehung fand ich Microsoft Groove sehr hilfreich. Dateien können als temporärer Platzhalter (wie eine Zip-Datei) in einem Groove-Arbeitsbereich abgelegt werden. Ziehen Sie die Dateien dann per Drag & Drop aus dem Groove-Arbeitsbereich in den Zielordner im Windows Explorer.

EricS
quelle
1

Ich hatte ein ähnliches Problem, bei dem wir eine Baumstruktur mit Verknüpfungen hatten. Wir wollten die Zieldateien neben der Verknüpfung kopieren.

Unten ist das VB-Skript. Sie können das Zielverzeichnis einfach ändern, indem Sie die fp_desVariable ändern .

Set fso = CreateObject("Scripting.FileSystemObject")
Set shell = CreateObject("Wscript.Shell")

function main()

    if Wscript.Arguments.Count = 0 then Wscript.Echo "Please pass path to folder to scan"

    Wscript.Echo "Getting list of all files..."
    set all_files = get_files(Wscript.Arguments(0),"lnk",Nothing)

    for each fp_sc in all_files.Items
        Set sc = shell.CreateShortcut(fp_sc)        

        fp_src = sc.TargetPath
        fp_des = fso.GetParentFolderName(fp_sc) & "\" & fso.GetFileName(fp_src)

        if not fso.FileExists(fp_src) then
            Wscript "ERROR: Failed to find: " & vbcrlf & fp_src
        elseif fso.FileExists(fp_des) then
            Wscript.Echo "Already exists: " & fso.GetFileName(fp_des)
        else
            Wscript.Echo "Copying: " & fso.GetFileName(fp_des)

            fso.CopyFile fp_src,fp_des
        end if
    next

end function

function get_files(fp_dir,ext,dic) 
    if dic is Nothing then set dic = CreateObject("Scripting.Dictionary")

    set fldr = fso.GetFolder(fp_dir)

    for each fl in fldr.Files
        if fso.GetExtensionName(fl) = ext OR ext = "" then
            dic.Add dic.Count, fl   
        end if
    next

    for each fl_child in fldr.SubFolders
        get_files fl_child,ext,dic
    next

    set get_files = dic
end function

main

Führen Sie den folgenden Code aus

cscript.exe //nologo links_to_files.vbs "%path_to_root_dir%"
user425678
quelle
Hat super funktioniert - vielen Dank! Ich habe es .als Pfad im Verzeichnis mit dem lnks ausgeführt, und es hat einwandfrei funktioniert. Der FileExists(fp_des)Scheck ist eine nette Geste.
cxw
0

In PowerShell ist dies unkompliziert.

So kopieren Sie das Ziel einer Windows-Verknüpfung (* .lnk) mit PowerShell

(geändert von http://windowsitpro.com/powershell/working-shortcuts-windows-powershell )

1) Erstellen Sie die folgende Datei (Powershell-Skript):

====== file Get-Shortcut.ps1============

begin

{
    $WshShell = New-Object -ComObject WScript.Shell;
}

process

{
    $WshShell.CreateShortcut($_)
}
====== end file Get-Shortcut.ps1============

2) Legen Sie die Ausführungsrichtlinie fest, um Skripte auszuführen

Verschiedene Möglichkeiten, dies zu tun. Eine Methode:

  • Führen Sie Powershell als Administrator aus

  • Set-ExecutionPolicy-Bypass

(Wenn Sie fertig sind, setzen Sie es zurück, z. B. "Set-ExecutionPolicy Default")


3) Führen Sie diese Schleife in PowerShell aus

foreach ($lnk in Get-ChildItem C:\FromDir\\*.lnk -ErrorAction SilentlyContinue | .\Get-Shortcut.ps1)

{

echo $lnk.targetpath 

copy $lnk.targetpath C:\ToDir

}
ost
quelle
0

Halten Sie die [Strg] -Taste gedrückt. Klicken und ziehen Sie, was Sie kopieren möchten.

Chris
quelle
1
Dies entspricht nicht den Anforderungen der ursprünglichen Frage.
Heptite
0

Andere Möglichkeit: Es gibt das Dienstprogramm ShortcutsToClipboard.exe :

  1. Kopieren Sie das Dienstprogramm in den Ordner mit den Verknüpfungen.
  2. Starte es. Dadurch werden die Ziele der Verknüpfungen in die Zwischenablage kopiert.
  3. Navigieren Sie mit dem Explorer zum Zielverzeichnis und drücken Sie Strg-V oder "Rechtsklick> Einfügen".
  4. Das Kopieren wird ausgeführt

( Ursprüngliche Informationsquelle )

Reisender
quelle
0

In meiner vorherigen Antwort. Ich erwähnte, dass Aladdin in den 90er Jahren eine PC-Version von Dropstuff erstellt hat, die sowohl komprimierte "zip" - als auch "sit" -Archive erstellt. Ob Sie es glauben oder nicht, ich habe immer noch einen Windows 98-Computer, auf dem Version 5.0 von Aladdin Dropstuff installiert ist. Wie bei der alten Mac-Version können Sie bei dieser PC-Version als Präferenz auswählen, ob der angegebene Link in das Archiv oder in die Originaldatei aufgenommen werden soll, auf die der Link verweist. Leider gibt es einige Probleme. Erstens ist eine der Tastenkombinationen für dieses Programm Strg + Z, was möglicherweise die Funktion von Strg + Z in anderen Programmen beeinträchtigt. Zweitens, wenn Sie dies auf einem Windows 7-Computer installieren, ist nicht klar, wie gut es mit dem komprimierten "zip" koexistiert. Dateiverwaltung, die jetzt in Windows integriert ist (Windows 95 und 98 hatten diese Funktion nicht). Sobald sich die gewünschten Dateien im von Aladdin Dropstuff erstellten "zip" -Archiv befinden, ist es in jedem Fall einfach, diese Dateien aus diesem Archiv abzurufen.

Robert Ertl
quelle
-1

Ich weiß, dass Sie Windows XP, Vista oder 7 gesagt haben, aber in den 90er Jahren unter Mac OS 7 konnten Sie Aladdins DropStuff-Software (indem Sie ein Kontrollkästchen in den Einstellungen aktivieren) anweisen, beim Erstellen die Originaldateien anstelle der Aliase (Verknüpfungen) zu füllen ein "sit" (ähnlich einem "zip") komprimierten Archiv. Damals gab es eine kostenlose PC-Version von Aladdins Software, mit der "Zip" -Archive erstellt wurden. Es lief unter Windows 95 und 98. Vielleicht läuft es unter Windows XP, Vista oder 7 und ermöglicht es Ihnen, dasselbe dort zu tun.

Robert Ertl
quelle