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

Xbox游戏栏截图处理脚本问题:文件名时间变化致正则匹配失效

解决Xbox Gamebar截图重名文件的自动整理问题

需求回顾

  • 目标目录:Xbox Gamebar默认截图目录$env:USERPROFILE\Videos\Captures
  • 处理逻辑:
    1. 按「去除文件名末尾(数字)后缀后的内容」分组,找出存在重名的文件组
    2. 对每个重名组,取最新的文件
    3. 若存在重名,将该文件重命名为[当前时间戳]_[截图标题].png格式,移动到同目录下的Output文件夹;无重名则不操作

原代码问题

原代码的正则表达式硬匹配了固定格式的时间字符串(\d{2}_\d{2}_\d{4}\s+\d{2}_\d{2}_\d{2}\s+[ap]m),但Xbox Gamebar的截图文件名时间格式可能因系统区域设置变化(比如24小时制/12小时制、日期分隔符不同),导致正则匹配失败,无法提取标题和执行后续操作。

修改后的解决方案

调整分组和匹配逻辑,不再依赖固定时间格式,而是通过识别文件名末尾的(数字)计数后缀来提取核心标题,确保兼容所有Xbox Gamebar生成的截图文件名格式:

$ParentFolder = "$env:USERPROFILE\Videos\Captures"
# 确保Output目录存在
$OutputFolder = Join-Path -Path $ParentFolder -ChildPath "Output"
New-Item -Path $OutputFolder -Force -ItemType Directory | Out-Null

# 按「去除末尾(数字)后缀的文件名」分组,筛选重名组
Get-ChildItem -Path $ParentFolder -Filter '*.png' -File | 
    Group-Object { $_.BaseName -replace '\s*\(\d+\)$', '' } | 
    Where-Object { $_.Count -gt 1 } | 
    ForEach-Object {
        # 获取组内最新的文件
        $newestFile = $_.Group | Sort-Object LastWriteTime -Descending | Select-Object -First 1
        
        # 提取截图标题:去掉末尾的(数字)和时间部分
        # 逻辑:从开头到第一个连续数字前的内容作为标题(兼容任意时间格式)
        if ($newestFile.BaseName -match '^(.+?)\s+\d') {
            $screenTitle = $matches[1].Trim()
        }
        else {
            #  fallback:如果匹配失败,直接用去除(数字)后的文件名作为标题
            $screenTitle = $_.Name
        }

        # 生成新文件名:当前时间戳_标题.png
        $timestamp = Get-Date -Format "yyyyMMddHHmmss"
        $newFileName = "{0}_{1}{2}" -f $timestamp, $screenTitle, $newestFile.Extension

        # 移动并重命名文件
        Write-Host "正在移动文件:'$($newestFile.Name)' -> '$newFileName'"
        Move-Item -Path $newestFile.FullName -Destination (Join-Path -Path $OutputFolder -ChildPath $newFileName) -Force
    }

关键改进点

  1. 分组逻辑优化:用-replace '\s*\(\d+\)$', ''精准去除文件名末尾的(数字)后缀(比如"截图(2)"变成"截图"),确保分组准确。
  2. 标题提取兼容化:正则^(.+?)\s+\d匹配从开头到第一个数字前的内容作为标题,不管时间部分是12小时制、24小时制还是其他格式,都能正确提取核心标题。
  3. 路径绝对化:全程使用绝对路径,避免相对路径可能导致的文件找不到问题。
  4. 容错处理:增加匹配失败的 fallback 逻辑,确保即使极端情况也能正常执行。

内容的提问来源于stack exchange,提问作者jeriru

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.11 05:40:22