Was ist der Windows-Befehlszeilenbefehl zum Kopieren von Dateien?

34

Was ist der Windows-Eingabeaufforderungsbefehl zum Kopieren von Dateien?

Ich muss eine Datei von Speicherort A nach Speicherort B verschieben. Auch wenn der Ordner für Speicherort B nicht vorhanden ist, möchte ich, dass er erstellt wird.

Ich brauche dies als Befehlszeile, damit ich es automatisieren kann.

Die Version von Windows ist XP.

David Basarab
quelle
1
robocopyfunktioniert auch
super

Antworten:

44

Der Befehl xcopyist das, wonach Sie suchen. Beispiel:

xcopy source destination /E /C /H /R /K /O /Y

Der obige Befehl kopiert die Quelle in das Ziel, Dateien und Verzeichnisse (einschließlich leere), stoppt nicht bei Fehlern, kopiert versteckte und Systemdateien, überschreibt schreibgeschützte Dateien, behält Attribute und Besitz- / ACL-Informationen bei und unterdrückt die Aufforderung zum Überschreiben vorhandener Zieldateien.

/E    Copies directories and subdirectories, including empty ones.
      Same as /S /E. May be used to modify /T.
/C    Continues copying even if errors occur.
/H    Copies hidden and system files also.
/R    Overwrites read-only files.
/K    Copies attributes. Normal Xcopy will reset read-only attributes.
/O    Copies file ownership and ACL information.
/Y    Suppresses prompting to confirm you want to overwrite an
      existing destination file.

Für weitere Informationen geben Sie xcopy /?und Ihre Befehlszeile.

KCD
quelle
2
Zukünftige Versionen von Windows enthalten RoboCopy. Aus Vista XCOPY: "HINWEIS: Xcopy ist jetzt veraltet, bitte verwenden Sie Robocopy."
George Tsiokos
1
Interessanterweise regiert xcopy auch zwei Jahre später unter Windows 7 noch immer die Welt.
Beachten Sie, dass eingebettete Windows XP-Umgebungen (POSReady 2009 usw.) nicht mit xcopy geliefert werden.
Epoc
Ich habe eine Bearbeitung vorgeschlagen, um alle diese Optionen aufzulisten ...! Wenn Sie es nicht automatisieren /E /Hund vielleicht /K /Omit ein paar praktischen Eingabeaufforderungen weit kommen
KCD
Vergessen Sie nicht /J, was einen Fehler mit XCopy beim Kopieren großer Dateien verhindert. Ich bin mir nicht sicher, warum sie das nicht zur Standardeinstellung machen würden ...
BlueRaja
8

Verwenden Sie md , um den Ordner zu erstellen (es ist in Ordnung, wenn es bereits existiert)

Verwenden Sie Kopieren oder Verschieben für Dateien und Kopieren für Ordner

Dani
quelle
Können Sie mir ein Beispiel für die Syntax geben?
David Basarab
3
copy fred.txt copy_of_fred.txt
Adam Gibbins
1
Kopieren /? gibt Ihnen den Hilfetext, ähnlich einer DOS-Manpage.
Scottie T
2

In einer Batch-Datei:

if not exists locationB\nul mkdir locationB
copy locationA\file locationB

if not existsÜberprüft den Parameter, um festzustellen, ob er vorhanden ist, funktioniert jedoch nur für Dateien. Um das Vorhandensein eines Verzeichnisses zu überprüfen , müssen Sie nach einer 'Pseudodatei' mit dem Namen "nul" suchen. Wenn Sie das Vorhandensein dieser Datei überprüfen, wird immer true zurückgegeben, wenn das Verzeichnis vorhanden ist.

Die Kopierzeile kopiert die fileim Verzeichnis aufgerufene Datei locationAnach locationBund benennt die Datei gleich. Wenn Sie die Datei gleichzeitig umbenennen möchten, können Sie dies auch tun:

copy locationA\file locationB\newfilename
Graeme Perrow
quelle
2

Wenn Sie die Möglichkeit haben möchten, die Kopie und andere erweiterte Funktionen zu synchronisieren (ignorieren Sie bestimmte Ordner, schließen Sie nur bestimmte Platzhalter ein), schauen Sie sich an robocopy. In Vista und höher enthalten, optional (aus Resource Kit-Tools) in früheren Versionen.

Richard
quelle
Für alles Wichtige werde ich auch mit dem Robokopieren anfangen. Ich kann mich anscheinend an einen großen Leistungsunterschied gegenüber xcopy erinnern, wenn ich eine große Anzahl von Dateien synchronisiere.
Kara Marfia
1

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.


  1. 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:

    robocopy C:\tools D:\backup\tools /e
    

    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.

  2. 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]

    robocopy "C:\Users\My Documents" "D:\backup\My Documents" /mir
    

    Diese Funktion behält alle Berechtigungen der Originaldateien bei.

  3. 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.

    robocopy "C:\Users\My Documents" "D:\backup\My Documents" /z
    
  4. 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.

    robocopy "C:\Users\My Documents" "D:\backup\My Documents" /log+:<filename>.txt
    

    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.

Program-Me-Rev
quelle
0

xcopy erstellt die Verzeichnisstruktur für Sie. Der Trick besteht darin, die Option / I zu verwenden und am Ende des Dateinamens ein Sternchen zu setzen, damit xcopy denkt, dass Sie mehrere Dateien kopieren. Andernfalls werden Sie gefragt, ob der Zielname der gewünschte Dateiname oder der gewünschte Verzeichnisname ist . Beispielsweise.

xcopy /I c:\<SourceDir>\<SourceFile> c:\<TargetDirThatDoesNOTExist>

Ich würde mir auch RoboCopy ansehen, aber Sie müssen es aus dem Resource Kit herunterladen, da es erst unter Windows und unter Vista verfügbar ist.

WaldenL
quelle
-1

Der obige Befehl erstellt eine zusätzliche Verzeichnisebene mit dem Namen der Quelldatei. Also ... xcopy / I srcdir \ dir1 \ dir2 \ file1.txt * destdir \ dir1 \ dir2 \ file1.txt ergibt destdir \ dir1 \ dir2 \ file1.txt \ file1.txt

Jeff
quelle
1
Es macht keinen Sinn, eine so alte Frage zu beantworten, die bereits eine akzeptierte Antwort hat und keinen Mehrwert für Ihre Antwort darstellt.
Alphamikevictor