Как скопировать элементы с иерархией исходных папок и где CreationTime в качестве критерия? - PullRequest
0 голосов
/ 16 апреля 2019

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

Мне удалось скопировать и сохранить структуру папок, но почему-то она не выбирается на основе моих критериев времени создания.

$archive_MonthlyStatement = "D:\Archives\Monthly_Statement"
$path2 = "D:\Temp\Test_Output\"

$scan_monthStatement = Get-ChildItem $archive_MonthlyStatement | Where-Object {
    (( $_.PSIsContainer ))
} | Where {
    $_.CreationTime -lt (Get-Date).AddDays(-730)
} | Copy-Item -Destination "$path2" -Recurse -Container

Ожидаемый результат:
Исходная папка:

Archives\Reports\Branch1\2015\pdf files
Archives\Reports\Branch1\2016\pdf files
Archives\Reports\Branch1\2017\pdf files
Archives\Reports\Branch1\2018\pdf files
Archives\Reports\Branch1\2019\pdf files

Папка назначения:

Archives\Reports\Branch1\2015\pdf files
Archives\Reports\Branch1\2016\pdf files
Archives\Reports\Branch1\2017\pdf files

Фактический результат:
Папка назначения:

Archives\Reports\Branch1\2015\pdf files
Archives\Reports\Branch1\2016\pdf files
Archives\Reports\Branch1\2017\pdf files
Archives\Reports\Branch1\2018\pdf files
Archives\Reports\Branch1\2019\pdf files

Каким-то образом все копируется, если время создания родительского каталога превышает 730 дней.

1 Ответ

0 голосов
/ 17 апреля 2019

проверьте время создания каждого файла и скопируйте его.

$srcDir = "D:\Archives\Monthly_Statement"
$destDir = "D:\Temp\Test_Output"

Get-ChildItem $srcDir -Filter *.pdf -Recurse |
Where-Object CreationTime -lt (Get-Date).AddDays(-730) |
ForEach-Object {
    $destFile = [IO.FileInfo]::new($_.FullName.Replace($srcDir, $destDir))
    if($destFile.Exists) { return }
    if(!$destFile.Directory.Exists) { $destFile.Directory.Create() }
    $_.CopyTo($destFile)
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...