Показать полную графическую версию : копирование файлов по дню недели
diesel_ttt
22-12-2020, 13:18
Всем, Доброго дня!
Коллеги, прошу помочь. Как в этом скрипте исключить повторное копирование файлов если они уже есть, а только копировать новые файлы??
$Source_Path = "C:\Temp"
$Destination_Path = "C:\backup"
Get-ChildItem -Recurse $Source_Path |`
?{! $_.PSIsContainer} |`
?{$_.CreationTime.DayOfWeek -eq "Thursday"} |`
Copy-Item -Destination $Destination_Path
Можно проверять существование одноимённого конечного файла. А можно и исключать, например:
$sSourceFolder = 'C:\Мои проекты\0329\Source'
$sDestFolder = 'C:\Мои проекты\0329\Destination'
Copy-Item -Path "$sSourceFolder\*.*" -Destination $sDestFolder -Exclude (Get-ChildItem -Path $sDestFolder)
в этом скрипте »
В этом скрипте Вы копируете файлы из всех вложенных каталогов в одну кучу. Вас сие никак не смущает?
diesel_ttt
22-12-2020, 16:10
у меня просто файлы из одной папки складываются в другую. Но мысль я вашу понял, осталось доделать под мой вариант.
у меня просто файлы из одной папки складываются в другую. »
Нет, у Вас не так. Файлы из всех папок:
$Source_Path = "C:\Temp"
$Destination_Path = "C:\backup"
Get-ChildItem -Recurse $Source_Path |`
?{! $_.PSIsContainer} |`
?{$_.CreationTime.DayOfWeek -eq "Thursday"} |`
Copy-Item -Destination $Destination_Path
— складываются в одну.
diesel_ttt
22-12-2020, 17:30
пояему из всех ? там же только папка Temp как сурс.
пояему из всех ? »
Потому что Вы используете параметр «-Recurse».
greg zakharov
22-12-2020, 20:05
Критерии новизны файла относительны: толи за отправную точку нужно брать текущий день, например,
(Get-ChildItem C:\Temp -Recurse -File).Where{
($$=$_.CreationTime).DayOfWeek -eq 'Thursday' -and $$.ToShortDateString() -eq (
Get-Date).ToShortDateString()
}.ForEach{Copy-Item $_.FullName C:\backup}
толи, нужно брать все те файлы, что позже самой поздней даты в C:\backup, - задание требует чёткой формулировки.
© OSzone.net 2001-2012
vBulletin v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.