You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何编写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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.23 14:52:28