To głupie pytanie, ale po prostu nie wiem, dlaczego to nie działa.
Próbuję rekurencyjnie kopiować pliki z folderu A do folderu B. Robię to:
Copy-Item -Path "C:\FolderA\" -Destination "C:\FolderB\" -recurse -Force -Verbose
Działa świetnie, nie ma problemu.
Z wyjątkiem wyniku w folderze B jest to:
C:\FolderB\FolderA\file.txt
Podczas gdy chcę, aby to było:
C:\FolderB\file.txt
Jakiej głupiej oczywistej rzeczy brakuje mi?
powershell
CleverPatrick
źródło
źródło
Odpowiedzi:
Twoje polecenie mówi PowerShellowi, aby skopiował sam folder z całą zawartością do folderu docelowego. Aby skopiować tylko zawartość oryginalnego folderu, zmień ścieżkę w następujący sposób:
Zwróć uwagę na gwiazdkę (*) po nazwie folderu. Spowoduje to skopiowanie zawartości (w tym podfolderów) folderu, ale nie samego folderu do folderu docelowego.
Korzystanie z polecenia cmdlet Copy-Item
źródło
md "C:\FolderB"
wcześniejCopy-Item
wydaje się unikać tego problemu.Copy-Item
odtworzy strukturę folderów, ale o jeden poziom niżej (np. ZostanieC:\FolderA\B\C
skopiowanyC:\FolderB\C
zamiastC:\FolderB\B\C
) i może również zawieść, gdy istnieje wiele podfolderów. Zawsze upewnij się, że folder docelowy istnieje przed wywołaniem elementu kopiowania. Pachnie to jak błąd (nie widzę żadnego powodu, dla którego to niespójne zachowanie byłoby pożądane).Możesz użyć -File -Recurse dla Rekursywnie kopiuj tylko pliki:
Copy-Item -Path "C: \ Source" -Destination "C: \ Dest" -File -recurse -Force -Verbose
Lub użyj -Directory -Recurse, aby skopiować tylko strukturę folderów empy:
Copy-Item -Path "C: \ Source" -Destination "C: \ Dest" -Directory -recurse -Force -Verbose
Z poważaniem,
Paul Pedroza
źródło
Działa również.
źródło