Powershell Copy-Item rekursiv, aber ohne Ordnernamen


18

Das ist eine dumme Frage, aber ich weiß einfach nicht, warum es nicht funktioniert.

Ich versuche, die Dateien rekursiv von FolderA nach FolderB zu kopieren. Ich mache das:

Copy-Item -Path "C:\FolderA\" -Destination "C:\FolderB\" -recurse -Force -Verbose

Es funktioniert super, kein Problem.

Außer das Ergebnis in FolderB ist folgendes:

C:\FolderB\FolderA\file.txt

Ich möchte, dass es so ist:

C:\FolderB\file.txt

Was für eine blöde offensichtliche Sache vermisse ich?


3
Du machst nichts Dummes, Kopierartikel ist nur eine PITA.
StingyJack

Antworten:


27

Ihr Befehl weist PowerShell an, den Ordner selbst mit seinem gesamten Inhalt in den Zielordner zu kopieren. Um nur den Inhalt des Originalordners zu kopieren, ändern Sie Ihren Pfad wie folgt:

Copy-Item -Path "C:\FolderA\*" -Destination "C:\FolderB\" -recurse -Force -Verbose

Beachten Sie das Sternchen (*) nach dem Ordnernamen. Dadurch wird der Inhalt (einschließlich der Unterordner) des Ordners kopiert, nicht jedoch der Ordner selbst in den Zielordner.

Verwenden des Cmdlets Copy-Item


2
Beachten Sie, dass dadurch die Ordnerstruktur nicht kopiert wird, wenn der Zielordner nicht vorhanden ist. Aufruf md "C:\FolderB"vor Copy-Itemscheint dieses Problem zu vermeiden.
Zett42

Aufbauend auf dem obigen Kommentar von @ zett42 scheint der Zielordner, wenn er noch nicht vorhanden ist, Copy-Itemdie Ordnerstruktur zu reproduzieren, aber eine Ebene tiefer (z. B. C:\FolderA\B\Cwird C:\FolderB\Canstelle von kopiert C:\FolderB\B\C) und kann auch fehlschlagen, wenn mehrere Unterordner vorhanden sind. Stellen Sie immer sicher, dass der Zielordner vorhanden ist, bevor Sie Copy-Item aufrufen. Dies riecht nach einem Fehler (ich kann keinen Grund erkennen, warum dieses inkonsistente Verhalten wünschenswert wäre).
Marc Durdin

1
Siehe auch Kommentar zu SO .
Marc Durdin

0

Sie können -File -Recurse nur zum rekursiven Kopieren von Dateien verwenden:

Copy-Item -Path "C: \ Source" -Destination "C: \ Dest" -File -recurse -Force -Verbose

Oder verwenden Sie -Directory -Recurse, um nur die Empy-Ordnerstruktur zu kopieren:

Copy-Item -Path "C: \ Source" -Destination "C: \ Dest" -Directory -recurse -Force -Verbose

Mit freundlichen Grüßen,

Paul Pedroza


-1
Copy-Item -Path "C:\FolderA" -Destination "C:\FolderB" -recurse -Force -Verbose

Würde auch funktionieren.


1
Dies scheint ein Kommentar zu FastEthernets ähnlicher Antwort zu sein. Wenn Sie eine alternative Antwort vorschlagen möchten, sollten Sie erklären, warum die Frage beantwortet wird.
Blackwood

Dadurch wird C: \ FolderB erstellt, wenn es nicht vorhanden ist. Wenn C: \ FolderB vorhanden ist, wird C: \ FolderB \ FolderA erstellt. Wenn Sie diesen Befehl zweimal ausführen, können Sie zwei Kopien von allem an leicht unterschiedlichen Orten erhalten! So viel Schmerz.
Lamarth
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.