2013-03-22 7 views
3

Я копирую 10 000 файлов из одного каталога в другой каталог.Как скопировать всю структуру каталогов?

Обе структуры каталогов имеют одинаковые файлы; однако размеры могут быть разными.

Как заставить перезаписывать файлы с разными размерами и НЕ копировать файлы одинакового размера?

До сих пор у меня есть это:

$source = 'D:\Test1' 
$destination = 'D:\test2' 
$exclude = @('*.db','test2.log') 
$sourcelist = Get-ChildItem $source -exclude $exclude 
foreach ($file in $sourcelist){ 
    $result = test-path -path "$destination\*" -include $file 
    if ($result -like "False"){ 
    #uncomment the next line to see the value being passed to the $file parameter 
    #Write-Host $file 
    Copy-Item "$file" -Destination "$destination" 
    } 
} 

Я думаю, что будет копировать файлы, которые не существуют в месте назначения. Однако я также хочу скопировать файлы, которые существуют, но где их размер отличается.

ответ

10

Используйте robocopy вместо того, чтобы пытаться повторно изобрести его в PowerShell.

robocopy D:\Test1 D:\Test2 /s 

Если вы хотите включить файлы где только атрибуты различаются («отлажены файлы»), добавьте /it, а также.

+0

Опция '/ mir' только для копирования новых или разных файлов и удаления из места назначения, где удалена из источника, является очень эффективным способом обновления адресата. – Richard

+0

@ Richard, так бы все было в режиме robocopy D: \ Test1 D: \ Test2/s/mir/it ?? –

+0

@ansgar большое спасибо. что означают файлы с tweaked? –

-1

Я думаю, проверяем файлы sourcelist LastWrite Time Stamps, а затем сравниваем их с отметками времени назначения файлов.

+0

не показан образец? – Kiquenet