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

PowerShell脚本需求:筛选符合Patch_#########格式的文件并提取编号

修改PowerShell脚本过滤指定格式文件

你可以通过正则匹配校验筛选符合Patch_#########(或其变体如Patch_#########_vN)格式的文件,不匹配的直接跳过。以下是具体修改方案:

方法一:循环内添加校验逻辑

修改后的脚本:

$compressedfiles = Get-ChildItem -Path $FilesPath\* -Include "*.vip", "*.zip", "*.cab"
foreach ($file in $compressedfiles) {
    # 匹配规则:以Patch_开头,后跟一串数字,允许带_vN后缀,结尾是指定格式
    if ($file.Name -match '^Patch_\d+(_v\d+)?\.(vip|zip|cab)$') {
        $PatchNumber = $file.Name -replace '^Patch_(\d+).*', '$1'
        # 后续操作代码...
        Write-Host "处理文件:$($file.Name),提取补丁编号:$PatchNumber"
    } else {
        # 跳过不符合格式的文件
        Write-Host "跳过不符合格式的文件:$($file.Name)"
        continue
    }
}

正则规则说明:

  • ^Patch_:强制文件名以Patch_开头(需忽略大小写的话,可加前缀(?i),即(?i)^Patch_)
  • \d+:匹配至少1位数字(要求固定8位的话,改成\d{8}即可)
  • (_v\d+)?:可选的版本后缀(如_v1、_v2),?表示该部分可有可无
  • \.(vip|zip|cab)$:结尾必须是指定的三种文件后缀之一

方法二:提前过滤文件(减少循环次数)

如果想在获取文件阶段就过滤掉不符合的,可结合Where-Object做正则筛选:

$compressedfiles = Get-ChildItem -Path $FilesPath\* -Include "*.vip", "*.zip", "*.cab" | 
    Where-Object { $_.Name -match '^Patch_\d+(_v\d+)?\.(vip|zip|cab)$' }

foreach ($file in $compressedfiles) {
    $PatchNumber = $file.Name -replace '^Patch_(\d+).*', '$1'
    # 后续操作代码...
    Write-Host "处理文件:$($file.Name),提取补丁编号:$PatchNumber"
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.24 10:45:33