我正在将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天,它就会以某种方式进行复制。
答案 0 :(得分:0)
检查每个文件的创建时间并复制。
$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)
}