Компьютерный форум OSzone.net  

Компьютерный форум OSzone.net (http://forum.oszone.net/index.php)
-   Скриптовые языки администрирования Windows (http://forum.oszone.net/forumdisplay.php?f=102)
-   -   копирование файлов по дню недели (http://forum.oszone.net/showthread.php?t=347417)

diesel_ttt 22-12-2020 13:18 2943751

копирование файлов по дню недели
 
Всем, Доброго дня!
Коллеги, прошу помочь. Как в этом скрипте исключить повторное копирование файлов если они уже есть, а только копировать новые файлы??

$Source_Path = "C:\Temp"
$Destination_Path = "C:\backup"
Get-ChildItem -Recurse $Source_Path |`
?{! $_.PSIsContainer} |`
?{$_.CreationTime.DayOfWeek -eq "Thursday"} |`
Copy-Item -Destination $Destination_Path

Iska 22-12-2020 14:59 2943785

Можно проверять существование одноимённого конечного файла. А можно и исключать, например:
Код:

$sSourceFolder = 'C:\Мои проекты\0329\Source'
$sDestFolder  = 'C:\Мои проекты\0329\Destination'

Copy-Item -Path "$sSourceFolder\*.*" -Destination $sDestFolder -Exclude (Get-ChildItem -Path $sDestFolder)

Цитата:

Цитата diesel_ttt
в этом скрипте »

В этом скрипте Вы копируете файлы из всех вложенных каталогов в одну кучу. Вас сие никак не смущает?

diesel_ttt 22-12-2020 16:10 2943806

у меня просто файлы из одной папки складываются в другую. Но мысль я вашу понял, осталось доделать под мой вариант.

Iska 22-12-2020 16:38 2943811

Цитата:

Цитата diesel_ttt
у меня просто файлы из одной папки складываются в другую. »

Нет, у Вас не так. Файлы из всех папок:
Код:

$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 2943819

пояему из всех ? там же только папка Temp как сурс.

Iska 22-12-2020 18:19 2943823

Цитата:

Цитата diesel_ttt
пояему из всех ? »

Потому что Вы используете параметр «-Recurse».

greg zakharov 22-12-2020 20:05 2943837

Критерии новизны файла относительны: толи за отправную точку нужно брать текущий день, например,
Код:

(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, - задание требует чёткой формулировки.


Время: 19:00.

Время: 19:00.
© OSzone.net 2001-