Über die Befehlszeile möchte ich ein Verzeichnis in ein anderes kopieren. Zum Beispiel gibt es Verzeichnis C:/test
und C:/test2
.
Ich möchte kopieren C:/test
in C:/test2
so dass das Ergebnis wird sein ,C:/test2/test
Alles , was ich bisher nur kopieren Sie die Dateien und Ordner in enthaltenen gefunden C:/test
in C:/test2
, aber das übergeordnete Verzeichnis auslässt.
windows
command-line
Scott Chamberlain
quelle
quelle
Antworten:
Versuchen Sie es
XCOPY
mit dem/E
Schalter. Mehr Infos hier .Ich habe diese Informationen nicht von meinem Gehirn in den Zugriff hatte Jahre !
AKTUALISIEREN
Die Dokumentation sagt , dass es kopiert alle Dateien und Unterverzeichnisse aus dem Quellverzeichnis (was bedeutet , dass das übergeordnete Verzeichnis nicht erstellt wird), so würden Sie erstellen müssen
test
inC:\test2
erster und dann verwendenXCOPY
.quelle
robocopy /CREATE /COPYALL /DCOPY:T src dst
, Sie kopieren nur den Ordner und leere Dateien, behalten aber alle Zeitstempel und andere Attribute bei.test
noch erstellt werden muss.md test
und dann mitxcopy
war trivial offensichtlich.copy
, ob ein Ordner keinen neuen Ordner erstellt und dann Inhalte kopiert.Hier gibt es Infos zu XCOPY [ 1 , 2 ]
quelle
Verwenden Sie ROBOCOPY, wenn Sie Sicherungsskripten erstellen. xcopy ist veraltet und wird wahrscheinlich in naher Zukunft nicht mehr verwendet. robocopy kann alles, was xcopy kann. Es ist auch flexibler und zuverlässiger. Das Erstellen von Skripten mit Robocopy ist zukunftssicher.
Verwenden Sie Robocopy, um Ordner einfach zu kopieren. Der Befehl robocopy ersetzt den Befehl xcopy. Es kann schnell ganze Ordner kopieren, ohne sich um die Definition des Inhalts kümmern zu müssen. Geben Sie beispielsweise Folgendes ein, um den gesamten Inhalt des Verzeichnisses C: \ tools in den neuen Ordner D: \ backup \ tools zu kopieren:
Der Modifikator / e weist robocopy an, alle Unterverzeichnisse einzuschließen. Dies schließt leere Ordner ein. robocopy kopiert automatisch versteckte und Systemdateien. Es werden neue Verzeichnisse erstellt, wenn diese am Zielspeicherort nicht vorhanden sind.
Ein Verzeichnis spiegeln. Das Spiegeln eines Verzeichnisses eignet sich hervorragend zum Erstellen von Sicherungen. Die Spiegeloption von Robocopy kopiert den gesamten Inhalt von der Quelle zum Ziel. Es wird dann alles am Ziel gelöscht, was an der Quelle nicht vorhanden ist. Dies stellt sicher, dass Ihre Sicherung nur die neuesten Versionen Ihrer Dateien enthält. Geben Sie beispielsweise Folgendes ein, um C: \ Users \ My Documents in D: \ backup \ My Documents zu spiegeln: [4]
Diese Funktion behält alle Berechtigungen der Originaldateien bei.
Neustart aktivieren. Möglicherweise möchten Sie die Möglichkeit einschließen, den Prozess neu zu starten, falls die Verbindung während des Kopiervorgangs getrennt wird.
Protokollieren Sie den Kopiervorgang. Mit robocopy können Sie eine Protokolldatei erstellen. Dies kann Ihnen helfen, Probleme zu lokalisieren oder ein Archiv dessen zu erstellen, was kopiert wurde.
Der Modifikator / log + hängt die vorhandene Protokolldatei an, anstatt sie zu überschreiben. Wenn Sie nur die alte Protokolldatei überschreiben möchten, verwenden Sie /log:.txt.
quelle
Ich empfehle robocopy gegenüber xcopy , da es viel mehr Optionen gibt, einschließlich intakter Zeitstempel, die ich für wesentlich halte .
Robocopy muss unter XP / 2003 hinzugefügt werden, ist jedoch ab Vista Standard.
Normalerweise verwende ich xxcopy , aber die 64-Bit-Version ist nicht kostenlos.
quelle
robocopy
ist ein Windows-Programm. Die Frage betraf DOS.Zum Beispiel, wenn Sie Laufwerksdaten über die Befehlszeile oder aus der xboot-Befehlsumgebung
E:
auf dasH:
Laufwerk (externe Festplatte) kopieren müssen.quelle
Wenn die ursprüngliche Frage das ist, wonach ich gesucht habe, dann habe ich und offensichtlich niemand darüber eine klare Lösung gefunden.
Nach was ich suche, ist, das Testverzeichnis in das test2 Verzeichnis zu kopieren, ohne es wieder einzutippen. So etwas wie
Wo
d:\test2\test
existiert nicht vor der Kopie, sondern nach. Dies würde beim zweiten Mal in dem Zielpfad einen Tippfehlertest einsparen. Der obige Befehl kopiert alle Dateien und Verzeichnisse in test2, erstellt jedoch kein Testverzeichnis.Bisher
ist wirklich der einzige Weg, den ich gefunden habe, um diesen Job zu erledigen. Auch hier kann bei Tippproblemen nicht garantiert werden, dass das Quell- und das Zielverzeichnis übereinstimmen.
Eine Alternative zur Korrektur ist
Dadurch wird das Zielverzeichnis in der
mydir
Variablen festgelegt und diese Variable sowohl im Quell- als auch im Zielpfad verwendet. Wenn Sie die Variable falsch eingeben, erhalten Sie entweder eine Fehlermeldung oder das Zielverzeichnis wird wahrscheinlich%
am Anfang und am Ende angezeigt.Es ist länger zu tippen, aber weniger wahrscheinlich, die falschen Namen zu bekommen. Sie werden auffallen.
quelle
xcopy /ievy c:\test d:\test2\test
, dass die Verzeichnisbaumstruktur beibehalten wird undset mydir=test&xcopy /isvy c:\%mydir% c:\test2\%mydir%
nur 1 & ausreicht, da das Ergebnis des Einstellens eines Werts immer erfolgreich ist.Wo
SWITCHES
kann sein:So kopieren Sie die gesamte Verzeichnisstruktur:
/hiev
So überschreiben Sie Dateien im Zielordner (falls der Zielordner bereits vorhanden ist):
/hievry
So überschreiben und kopieren Sie auch mit ACL + Attribut:
/hievxok
Am besten für Ihren Fall geeignet:
xcopy /hievry C:\test C:\test2\test
quelle
Ich hatte eine ähnliche Situation, in der ich eine Reihe von Ordnern einschließlich der Ordnernamen an einen Zielspeicherort kopieren musste, und hoffte, dass diese als beantwortet markierte Frage helfen würde, aber das ist nicht der Fall.
Erstens gibt es definitiv Fälle, in denen man diese Fähigkeit benötigt und ich traf auf einen, als ich Ordner aus C: \ Windows \ Assembly \ GAC_MSIL kopieren musste. Windows Explorer weigert sich, diesen Ordner anzuzeigen, daher müssen Sie eine Eingabeaufforderung verwenden.
Wenn Sie mit dem GAC-Ordner vertraut sind, wissen Sie, dass die Ordnernamen nicht trivial sind und bei Tippfehlern leicht verwechselt werden können.
Daher ist das Erstellen des Verzeichnisses im Voraus keine Option - es sei denn, Sie verwenden ein Skript -, das ich letztendlich verwendet habe, da dies die einzige echte Lösung war.
Sichern Sie zuerst die Ordner, die Sie in eine temporäre Datei kopieren möchten. Dies basiert normalerweise auf einem Muster, z
Führen Sie dann eine Schleife über die Einträge im Speicherauszug aus und kopieren Sie sie zum Ziel. Xcopy kümmert sich um die Erstellung eines Ordners, wenn Sie das Zielargument mit einem Backslash (\) beenden.
Fügen Sie diese beiden Befehle in eine Batch-Datei ein und führen Sie sie aus.
Nun, wenn nur xcopy oder robocopy dies eingebaut hat.
quelle
XCOPY SourceDrive: DestinationDrive: / S / E
quelle
/S /E
Fahnen)Ich bin zu einer funktionalen alternativen Antwort auf Ihre Frage gekommen.
Erstens wird
FORFILES
mit dem/S
Parameter festgelegt, dass jedes Unterverzeichnis inC:\test
erreicht wird.Zweitens ist es mit
/C
parameter möglich, eine Befehlskette mit nativen Variablen zu starten, die es ermöglicht, die identischen Verzeichnisse am Ziel zu erstellen und DANN die Dateien unter Verwendung von zwei bedingten Strukturen in diese zu kopieren.Die erste bedingte Struktur
@isdir==TRUE
(stellen Sie sicher, dass Sie Großbuchstaben verwenden) ermöglicht es, Verzeichnisse nur aus dem Quellcode abzurufen und sie dann am Ziel mitMKDIR [path]\@relpath
am Ende zu erstellen .Schließlich stellt der zweite
@isdir==FALSE
Befehl sicher, dass er nur mit Dateien arbeitet , und der Befehl COPY erledigt dann einfach den Job. Dabei werden alle Dateien abgerufen, die mit dem Befehl FORFILES[path]@relpath
als Ziel festgelegt wurden, um die Dateien in die gerade erstellten Verzeichnisse zu kopieren.Hoffe das hilft allen hier.
quelle
Dies wird das von der GUI tun, weiß nicht, wie sie es tun.
msgstr "... kleines Programm erlaubt Ihnen," aus Verzeichnis "und" in Verzeichnis "zu wählen, und kopiert NUR die Verzeichnisstruktur."
http://www.rjlsoftware.com/software/utility/treecopy/
quelle