Batch ausgewählte Dateien samt Pfad kopieren

Sc0ttY

Cadet 2nd Year
Registriert
Dez. 2005
Beiträge
19
Hoi!

Folgendes:
Es geht darum, ausgewählte Ordner (also mit allen Dateien darin) aus einer Ordnerstruktur von einer Festplatte auf eine andere zu kopieren, und dabei den Pfad des Ordners "mitzuschleifen".
Also:

X:\Archiv\Überordner1\Überordner2\Ordner

kopieren nach

Y:\Archiv\Überordner1\Überordner2\Ordner


Das soll mit einer Vielzahl von Ordner aus verschiedenen Überordnern 1 und 2 geschehen, ergo verschiedene Quellen und verschiedene Ziele.

Falls an dieser Stelle jemand 'ne Idee hat, wie ich das mit 'nem knuffigen Freewaretool oder sonstwie einfacher lösen kann, möge er mich erleuchten :p

Ansonsten war meine Idee diese:
Code:
FOR /F %%i IN (src.txt) DO (         //src.txt ist Liste aller ausgewählten Ordner bzw der Dateien darin
SET trgt=%%i:X:=Y:%
XCOPY /S /Y /I %%i %%trgt )

Ich mach' also nix weiter als den Laufwerksbuchstaben im absoluten Pfad zu ändern und das dann als Ziel zu verwenden.
Problem dabei ist, dass ausnahmslos jeder der Ordner Leerzeichen enthält und damit am Ende ein unvollständiger/unauffindbarer Pfad ensteht.
Außerdem funktioniert die Ersetzung
Code:
SET trgt=%%i:X:=Y:%
irgendwie nich' so als wie wenn ich's direkt in der Konsole eintippe. So entstehen immer Zielpfade in der Form

X:\Archiv\Überordner1\Überordner2\[halber Ordnername]:X:=Y:

Ich hab's schon mit ^-Escapes versucht, mit " um jede Zeile der src.txt...wird alles nix :(
Ich bitte um moralischen und technischen Beistand :p

Gruß Sc0ttY
 
ich könnte Dir evtl. Robocopy oder Richcopy von Microsoft empfehlen

ändern sich die Pfade ständig?
 
Wenn es eine einmalige Sache ist, mach es mit dem Totalcommander, da kannst Du im Hintergrund kopieren, die Ordner anklicken und kopieren, nächsten wählen und einreihen. Dann bleibt die Ordnerstruktur erhalten.
 
@Rego:
Wie ständig?
Das ganze soll eigentlich nur einmal gemacht werden...
Aber es handelt sich eben um mehrere verschiedene Unterordner2 in mehreren verschiedenen Unterordnern1 auf 2 Festplatten.

@werkam:
Das sind trotzdem noch ~350 Ordner, die ich kopieren muss...
 
FTP-Verbindungen kann der Totalcommander auch, dazu kannst Du einen Hintergrund-Transfermanager
beauftragen um Dateien aus einer Liste zu kopieren, evtl hilft es weiter. Könntest das eine Laufwerk als FTP verbinden und Deine Textdatei als Kopiervorlage benutzen. Habe es zwar bisher nur übers Inet benutzt aber warum solte das nicht auch intern übers Netz gehen.
 
ich meinte ob das Script immer wieder mal z.B. als Backup-Script laufen soll

Bei einmaliger Verwendung kannst Du mit Richcopy gut arbeiten. Gibt es hier

Damit habe ich schon ein Backup von mehreren TB verschoben, vielleicht hilft es Dir ja auch.
 
Du kannst sonst auch WinRAR nehmen und als Option "Volle Pfade speichern"
eingeben, dann macht er genau das was du willst.
Du kannst es dann als Profil speichern und auch über CMD aufrufen.

There you go :D
 
RichCopy sieht ja irgendwie hilfreich aus, aber is immernoch zu viel Handarbeit, mitunter deshalb weil die letztendliche Zeile mit allen Quellpfaden mehr als zu lang is...ich hab nichtmal 10 von den über 350 Ordnern auswählen können bevor die Source-Zeile voll war und der Pfad nichmehr gefunden werden konnte.

Die Idee mit WinRAR find ich nett, hat aber den Nachteil dass ich dabei zwischenzeitlich doppelt so viel Platz für die Nutzdaten brauch, weil ich die ja dann einmal gepackt und einmal ungepackt liegen hab, oder?
Und den Platz hab ich nich, sonst hätt ich nämlich einfach schon den kompletten Bestand auf die neue Platte kopiert, mit 'ner geeigneten Suchoption alles rausgesucht, was ich nich kopieren wollte und dieses Suchergebnis dann einfach wieder gelöscht... (auch wenn das 'ne ganz schöne Dampfwalzenmethode is :p )

Sc0ttY, appreciating
 
mit WinRAR kannst es im prinzip erst per bat packen und dann per Batch mit
Befehl Archiv löschen nach entpacken wieder hin, is halt mehr CPU die da verbraten wird.

Sonst halt was in VBScript oder AutoIt schreiben, das geht ja recht flott.
Kannst ja nen browseFolder dialog machen und dann das gleiche fürs Ziel,
den Pfad anhand von \ splitten und die Ordner im Ziel erstellen und dann am
besten mit Robocopy alles rein.

Mit Autoit gehts sogar noch einfacher, da DirCreate all parent Über-Verzeichnisse erstellt
von einem Pfad den man zuweist.
also kurz in 5min. hingekrazelt, so ungefähr :D

Code:
$source = FileSelectFolder("Select Source", "")
$target = FileSelectFolder("Select Target", "",1)
If FileExists($source) Then
    $newpath = $target & "\" & StringRight($source, StringLen($source)-3) ;remove drive C:\
    DirCreate($newpath)
    If FileExists($newpath) Then
        RunWait("robocopy """ & $source & """ """ & $target & """") ;start copying
    Else
        MsgBox(32, "alert", "could not create new folders")
    EndIf
Else
    MsgBox(32, "alert", "source does not exist")
EndIf
 
Zuletzt bearbeitet:
Zurück
Oben