Powershell Copy-Itemを再帰的に実行しますが、フォルダー名は含めません


19

これは愚かな質問ですが、なぜ機能しないのかわかりません。

FolderAからFolderBにファイルを再帰的にコピーしようとしています。私はこれをやっています:

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

問題なく動作します。

FolderBの結果を除いて、これは次のとおりです。

C:\FolderB\FolderA\file.txt

私はそれがなりたいのに対し:

C:\FolderB\file.txt

私には何の愚かな明白なものが欠けていますか?


4
あなたは何も愚かではありません、copy-itemは単なるPITAです。
StingyJack

回答:


27

コマンドは、PowerShellにフォルダー自体とそのすべての内容を宛先フォルダーにコピーするように指示しています。元のフォルダーの内容のみをコピーするには、次のようにパスを変更します。

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

フォルダ名の後のアスタリスク(*)に注意してください。これにより、フォルダーのコンテンツ(サブフォルダーを含む)がコピーされますが、フォルダー自体は宛先フォルダーにコピーされません。

Copy-Itemコマンドレットの使用


2
宛先フォルダが存在しない場合、これフォルダ構造をコピーしないことに注意してください。md "C:\FolderB"beforeを呼び出すCopy-Itemと、この問題を回避できるようです。
zett42

上記の@ zett42のコメントに基づいて、宛先フォルダーがまだ存在しない場合、Copy-Itemフォルダー構造は再現されますが、1レベル下(例:の代わりにC:\FolderA\B\Cコピーされる)になり、複数のサブフォルダーが存在する場合にも失敗する可能性があります。Copy-Itemを呼び出す前に、常に宛先フォルダーが存在することを確認してください。これはバグのようなにおいがします(この一貫性のない動作が望ましい理由はわかりません)。C:\FolderB\CC:\FolderB\B\C
Marc Durdin

1
SOに関するコメントも参照してください。
Marc Durdin

0

-File -Recurseを使用して、ファイルのみを再帰的にコピーできます。

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

または、-Directory -Recurseを使用して、empyフォルダー構造のみをコピーします。

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

敬具、

ポール・ペドロザ


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

また働くでしょう。


1
これは、FastEthernetの同様の回答に対するコメントのようです。代替回答を提案する場合は、それが質問に回答する理由を説明する必要があります。
Blackwood 2017年

C:\ FolderBが存在しない場合は作成されますが、C:\ FolderBが存在する場合はC:\ FolderB \ FolderAが作成されます。このコマンドを2回実行すると、わずかに異なる場所にあるすべての2つのコピーを取得できます。とても痛い。
ラマース
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.