Wie einfach einen Ordner in einen anderen Ordner kopieren, um die Struktur zu erhalten?

0

Angenommen, ich habe folgende Struktur und das aktuelle Arbeitsverzeichnis ist root:

root
    - sub1
         file1.xml
         file2.xml
    - sub2
         file3.css
    - _target
         {is an empty folder}
    run.bat

Ich möchte benutzen xcopy Kopieren sub1 unter _target die Struktur beibehalten. Das Ergebnis ist also:

- _target
    - sub1
        file1.xml
        file2.xml

Wenn ich jedoch versuche, Parameter hinzuzufügen (d. H. Eine beliebige Kombination von /I. /S. /E ) zu xcopy Ich ende immer damit:

- _target
    file1.xml
    file2.xml

Was sind die richtigen Parameter, um die oben genannten zu erreichen ( sub1 im _target mit seinem Inhalt)?

Ich habe versucht, etwas hinzuzufügen \ am Ende des Quell- und des Zielordners, um Unix nachzuahmen cp magisches Verhalten, aber das hat auch nichts geholfen.

Bitte beachten Sie, dass ich nach einer Lösung suche, die den Ordnernamen in den Argumenten nicht unnötig dupliziert ( Das meine ich mit "einfach" im Titel ), Ich weiß das xcopy sub1 _target\sub1 /I funktioniert!

Als ein letzter Ausweg ein robocopy Die Antwort mag akzeptabel sein, aber ich würde es wirklich vorziehen xcopy ohne den Parameter zu duplizieren.

TWiStErRob
quelle
Sie möchten also das Verzeichnis mit seinem Inhalt kopieren und nicht nur mit dem Inhalt. Ich weiß nicht, move funktioniert so bewegen Sie b a, wird das Verzeichnis b nach a verschoben. Aber Sie wissen, es ist eine Problemumgehung md thedirectory dann xcopy den Inhalt Ihres Quellverzeichnisses in dieses.
barlop
Alles sehr gut, wenn Sie das Verzeichnis woanders mit dem gleichen Namen kopieren möchten. Angenommen, Sie wollten den Inhalt eines Verzeichnisses in ein Verzeichnis mit einem anderen Namen kopieren. Die Tatsache, dass Sie mit xcopy das Verzeichnis angeben, dessen Inhalt Sie kopieren möchten, gibt Ihnen diese Flexibilität. In vielen Fällen ist es möglicherweise nicht zweimal derselbe Name.
barlop
Und wenn Sie denken, dass es aufgrund der Gelegenheiten, bei denen es zweimal derselbe Name ist, dann zu viele Tastatureingaben ist, und ein Nachteil, der von DOS geerbt wird, ist nicht so, dass Linux-Philosophie nur minimale Tastatureingaben ist. Versuchen Sie, nur Verzeichnisse und keine Dateien aufzulisten. In Linux .. brauchen Sie einen Suchbefehl, wohingegen in CMD oder DOS es nur geht dir /ad
barlop
Wenn das Zielverzeichnis nicht existiert, werden Sie von xcopy gefragt, ob es sich um eine Datei oder ein Verzeichnis handelt. Daher ist es einfacher, es vorher zu "md". Und mit DOS oder CMD wissen Sie, wenn Sie DIR blah * machen, was sie tun werden. Es werden alle Dateien / Verzeichnisse aufgelistet, die mit blah beginnen. Wenn Sie jedoch mit linux ls blah * oder ls / etc / ssh * ausführen, wissen Sie nicht, ob die Ausgabe die Dateien sein wird, die mit blah beginnen, oder der Inhalt von ein Verzeichnis, das mit blah beginnt. Also hat Linux einige gravierende Mängel, IMO.
barlop
Sie erstellen das Verzeichnis zuerst, nicht nur, damit Sie es nicht eingeben müssen (Sie können das erneute Eingeben durch Kopieren / Einfügen vermeiden, was sehr schnell ist, wenn Sie den Quickedit-Modus im Cmd-Fenster aktivieren), aber Sie erstellen auch das Verzeichnis Zuerst fragt xcopy Sie nicht, ob es sich um einen F-Ordner oder ein D-Verzeichnis handelt. Wenn Sie das Verzeichnis vor dem xcopy erstellt haben, können Sie die Registerkarte erneut verwenden. Sie müssen nicht einmal kopieren / einfügen oder den langen Ordnernamen erneut eingeben.
barlop

Antworten:

0

Das Problem ist, dass / S und / E einander widersprechen. Verwenden Sie entweder / S (alle außer leeren Ordnern) oder verwenden Sie / E (alle einschließlich leere Ordner).

Ich wette, Sie möchten die / E-Option verwenden, also wäre Ihre Xcopy:

xcopy sub1 _target\sub1 /I /E
LPChip
quelle
Zitieren aus der Frage: " Ich suche nach einer Lösung, die den Ordnernamen in den Argumenten nicht unnötig dupliziert [...]. Ich weiß das xcopy sub1 _target\sub1 /I funktioniert! "... was Sie dazu beitragen /E hat tatsächlich den Effekt, weil du hinzugefügt hast \sub1; Deshalb erstellt es das gewünschte Unterverzeichnis.
TWiStErRob
Ebenfalls /I /S /E war nur eine von vielen Kombinationen, die ich ausprobierte, das habe ich klargestellt.
TWiStErRob