2016-04-11 2 views
3

を実行しているときに、再帰的なコピー・アイテム・コールコピー項目をコピーフォルダは私の内部システム上で繰り返しログ収集中に二度目

セイの奇妙な行動を発見し、私はCを持っている:\いくつかのファイルやサブフォルダを持つソースファイル付き。私はこれをC:\ Targetに再帰的にコピーしたいと思います。最初にすべてのソースはC:\ Targetに再帰的にコピーされます

"C:\ Source"を "C:\ Target"に2回コピーしようとすると問題が発生します。この場合、 は、 "C:\ソース" になるにコピーされます "C:\ターゲット\ソース" たとえば

cls 
if(Test-Path "C:\Target") 
{ 
    Remove-Item "C:\Target" 
} 

Copy-Item "C:\Source" "C:\Target" -Force -Recurse | Out-Null 
DIR "C:\Target" 
Write-Host "OK" 
Write-Host " " 
Write-Host " " 

Copy-Item "C:\Source" "C:\Target" -Force -Recurse | Out-Null 
DIR "C:\Target" 
Write-Host "Not OK" 

スクリプトの出力:

Directory: C:\Target 


Mode    LastWriteTime  Length Name               
----    -------------  ------ ----               
d----   4/11/2016 3:45 PM   SampleSourceFolderLevel1          
-a---   4/11/2016 3:35 PM   0 SampleFileLevel0.txt           
OK 


d----   4/11/2016 3:45 PM   SampleSourceFolderLevel1          
d----   4/11/2016 3:45 PM   Source               
-a---   4/11/2016 3:35 PM   0 SampleFileLevel0.txt           
Not OK 

任意のアイデア方法コピーアイテムを同様に動作させることができますか

ROBOCOPY $sourceLog $targetLog /E | Out-Null 

??あなたがc:\Sourceの内容をコピーするように事前に

おかげ

Script output

答えて

2

は思えます。あなただけの\*を追加する必要があります:あなたがターゲットフォルダとなりましレットコピーフォルダC:\TargetからC:\Sourceを削除するため

Copy-Item -Path "C:\Source\*" -Destination "C:\Target" -Force -Recurse | Out-Null 

これは、最初の実行のために動作します。 C:\Targetが存在する場合、コマンドレットはソースのターゲットフォルダにコピーします。

+0

残念ながら、これは** C:\ Source **の第1レベルのファイルのみをコピーします。 ** C:\ Source \ Subfolder **のサブフォルダがある場合はコピーされません。 –

+0

再試行できますか?私の例を更新しました –

+0

ありがとう、@jisaak。私はこれが2回目の作品を参照してください、まだ最初のためにうまくいきません:)。アイテムをコピーする前にターゲットフォルダを作成せずにこれを克服する方法を知っていますか? [リンク](http://i.imgur.com/BXgA75j.png) –

関連する問題