РЕДАКТИРОВАТЬ в 11:00 по Гринвичу 28/06/2019
Хорошо, поэтому, основываясь на заметках нашего разговора, я попытался воспроизвести ваше окружение.
Get-ChildItem E:\test1
Directory: E:\test1
Mode LastWriteTime Length Name
---- ------------- ------ ----
-a---- 27/06/2019 13:54 11170 PRM_cashExtract_20190627t10045.csv_ATF03305
-a---- 27/06/2019 14:02 48682 PRM_cashExtract_20190627t10045.csv_ATF04251
-a---- 27/06/2019 13:54 11170 PRM_cashExtract_20190628t10045.csv_ATF03305
-a---- 27/06/2019 14:02 48682 PRM_cashExtract_20190628t10045.csv_ATF04251
-a---- 27/06/2019 14:07 44582 PRM_posExtract_20190627t10045.csv_ATF04251
-a---- 27/06/2019 14:07 1079 PRM_transExtract_20190627t10045.csv_ATF03305
-a---- 27/06/2019 14:18 1587853 PRM_transExtract_20190627t10045.csv_ATF04251
Затем я выполнил эти команды, чтобы просто перейти к двум файлам, которые вам нужны, основываясь на соглашении об именах и дате создания в течение последних 24/47 часов
$date = ( Get-Date ).AddDays( -1 ).DayOfYear
$bak_path = Get-ChildItem FILEPATH | where { ( $_.Name -match "_ATF04251" ) -and ( $_.Name -notmatch "trans" ) } | Select Name, FullName, @{ n="CreationTime" ; e={ ( Get-Date $_.CreationTime ).DayOfYear } } | sort CreationTime
Это дало мне:
$bak_path
Name FullName CreationTime
---- -------- ------------
PRM_cashExtract_20190627t10045.csv_ATF04251 E:\test1\PRM_cashExtract_20190627t10045.csv_ATF04251 178
PRM_posExtract_20190627t10045.csv_ATF04251 E:\test1\PRM_posExtract_20190627t10045.csv_ATF04251 178
PRM_cashExtract_20190628t10045.csv_ATF04251 E:\test1\PRM_cashExtract_20190628t10045.csv_ATF04251 179
Итак, он взял три файла: два со вчерашнего дня и один с сегодняшнего дня.
Эта последняя строка здесь группирует файлы по дате создания, и если число файлов равно двум или больше, оно копирует их в место назначения.
$bak_path | Group-Object { $_.CreationTime } | where { ( $_.Count -ge 2 ) -and ( $_.Group.CreationTime -ge $date ) } | foreach { Copy-Item $_.Group.FullName -Destination DESTINATION }