如何编写PowerShell脚本获取最新日期备份文件夹的完整路径
筛选日期最新的备份文件夹并获取完整路径
我的文件夹结构如下:
C:\work\settings backup\Backup-26.04.2023_16.36.53 C:\work\settings backup\Backup-26.04.2023_19.08.41 C:\work\settings backup\Backup-28.04.2023_18.42.14
我需要编写脚本遍历settings backup文件夹下的所有子文件夹(后续会增加到数十个),筛选出日期最新的文件夹(示例中为Backup-28.04.2023_18.42.14),并输出其完整路径,用于后续切换目录(演示时只需在屏幕显示路径即可)。
当前脚本只能比较末尾数字,无法正确比较完整日期,请问该如何解决?
现有脚本:
$RootFolder = "C:\work\settings backup" $lastFolder = Get-ChildItem -Path $RootFolder -Directory | Where-Object { $_.Name -match '(?<=-)\d*.\d*.\d*_\d*.\d*.\d*' } | Group-Object -Property @{Expression={ $matches[1] }} | ForEach-Object { $_.Group | Sort-Object -Property @{Expression={ [int]$matches[2] }} | Select-Object -Last 1 } $lastFolder.FullName
最终可运行代码(基于jdweng的回答修改)
$RootFolder = "C:\Praca\Vizrt\Mosart settings backup" $pattern = 'Backup-(?<date>.*)' $folders = Get-ChildItem -Path $RootFolder -Directory | Where-Object { $_.Name -match $pattern} $table = [System.Collections.ArrayList]::new() foreach($folder in $folders) { $newRow = New-Object -TypeName psobject $newRow | Add-Member -NotePropertyName Folder -NotePropertyValue $folder.Name $folder.Name -match $pattern $date = [DateTime]::ParseExact($Matches.Date.Replace('.','_'),'dd_MM_yyyy_HH_mm_ss',$null) $newRow | Add-Member -NotePropertyName Date -NotePropertyValue $date $table.Add($newRow) | Out-Null } $NewestFolder = $table | Sort-Object -Descending -Property Date | Select-Object -first 1 Write-host "The latest folder is: " $NewestFolder.Folder Set-Location (Join-Path $RootFolder -childpath $NewestFolder.Folder)
内容的提问来源于stack exchange,提问作者Blu3Rat
相关产品推荐
相关产品推荐

