[英]Copy files in powershell according to the date modified
我正在嘗試根據修改日期將文件夾中的文件復制到另一個文件夾,但代碼不斷將源文件夾中的所有文件復制到目標文件夾。
New-Item -Path $psScriptRoot\ArchiveTest -ItemType Directory
compress-Archive -Path $PSScriptRoot\*.txt -DestinationPath $PSScriptRoot\ArchiveTest | Where-Object LastWriteTime -Like "*2010*"
我試過更改 where-Object cmdlet 的語法。 當我將 Get-Item cmdlet 與完全相同的 Where-Object 一起使用時,我得到了正確的 output。
最終目標是根據年份將文件歸檔到文件夾中,例如:
文件夾中的項目:
模式 LastWriteTime 長度 名稱
-a---- 2010/02/15 15:23 39590 Test5.txt -a---- 2010/02/24 17:43 690581 Test5.txt -a---- 2012/04/12 11:46 105086 Test5.txt -a---- 2015/05/10 15:46 15952531 Test5.txt -a---- 2015/05/12 09:27 453365 Test5.txt
我想在文件夾中結束的內容:
模式 LastWriteTime 長度 名稱
d----- 2023/01/10 11:35 2010 -----
d----- 2023/01/10 11:35 2012 ------ (Zip 文件夾) d----- 2023/01/10 11:35 2015 -----/
這是如何做到的:
Get-ChildItem -Path $PSScriptRoot -Filter "*.txt" | Where-Object { $_.LastWriteTime.Year -eq "2022" } | Compress-Archive -DestinationPath "$PSScriptRoot\archive_2022.zip"
以下是如何在幾年內循環執行此操作:
$startYear = 2001;
$endYear = 2020;
for ($year = $startYear; $year -le $endYear; $year++) {
Get-ChildItem -Path $PSScriptRoot -Filter "*.txt" | Where-Object { $_.LastWriteTime.Year -eq $year } | Compress-Archive -DestinationPath "$PSScriptRoot\archive_$year.zip"
}
What I ended up with is:
$StartYear = 2001;
$EndYear = 2021;
$Thickness = @(Get-ChildItem $PSScriptRoot |
Where-Object {$_.PSIsContainer} |
ForEach-Object {$_.Name})
Write-Output $Thickness
for($Counter=0;$Counter -lt $Thickness.Count;$Counter++) {
if(!(Test-Path -Path "$PSScriptRoot\$($Thickness[$Counter])\Previous Years")) {
new-Item -Path "$PSScriptRoot\$($Thickness[$Counter])\Previous Years" -ItemType Directory
}
for ($year = $startYear; $year -le $endYear; $year++){
Get-ChildItem -Path $PSScriptRoot\$($Thickness[$Counter]) -Filter "*.WS" | Where-Object { $_.LastWriteTime.Year -eq $year } | Compress-Archive -DestinationPath "$PSScriptRoot\$($Thickness[$Counter])\Previous Years\$year.zip"
Get-ChildItem -Path $PSScriptRoot\$($Thickness[$Counter]) -Filter "*.WS" | Where-Object { $_.LastWriteTime.Year -eq $year } | Remove-Item
}
}
Any comment on how i could improve it?
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.