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

PowerShell中IF条件判断未按预期触发,求排查解决

问题分析与解决方案

核心问题原因

你的判断条件无法触发的根本原因是循环变量j的含义和分卷编号不匹配:

  • for循环中j是数组AllRarfiles的索引,从1开始遍历(跳过了索引0的part1.rar)。
  • 但你用$j作为分卷编号拼接字符串,比如j=1时,拼接出的是Factory_Selection_2.part1.rar,而此时NextRar是数组索引1对应的Factory_Selection_2.part2.rar,两者自然不匹配;当j=2时,拼接出part2,但NextRar是索引2的part3,以此类推,永远无法命中。

另外,TrimEnd(".part1.rar")的写法存在隐患:它是按字符集合移除末尾字符,而非精确匹配字符串,比如如果文件名是Factory_Selection_2.rar.part1.rar,会错误地截断成Factory_Selection_2,建议改用精确替换。

修复方案

方案1:使用正则表达式匹配同组分卷(推荐)

正则表达式可以更可靠地匹配所有同前缀的分卷文件,且不受数组顺序影响:

if($CurrentRar.Contains(".part1.rar")){
        [void] $RarGroup.Add($CurrentRar)
        # 改用-replace精确移除末尾的.part1.rar
        $CurrentRarBase = $CurrentRar -replace '\.part1\.rar$', ''

        foreach ($file in $AllRarfiles) {
            $NextRar = $file.Name
            # 跳过已经添加的part1文件
            if ($NextRar -eq $CurrentRar) { continue }
            # 正则匹配同组的partN.rar(N≥2)
            if ($NextRar -match "^$([regex]::Escape($CurrentRarBase))\.part(\d+)\.rar$") {
                $partNumber = [int]$matches[1]
                if ($partNumber -gt 1) {
                    Write-Host "Test Hit" -ForegroundColor Green
                    [void] $RarGroup.Add($NextRar)
                }
            }
        }

        $RarGroups.Add($RarGroup)
    }

方案2:修正循环变量与分卷编号的对应关系

如果坚持使用原循环逻辑,需要将分卷编号改为$j+1(因为索引j对应的分卷号是j+1):

if($CurrentRar.Contains(".part1.rar")){
        [void] $RarGroup.Add($CurrentRar)
        $CurrentRarBase = $CurrentRar -replace '\.part1\.rar$', ''

        for ($j = 1; $j -lt $AllRarfiles.Count; $j++){
            $NextRar = $AllRarfiles[$j].Name
            # 分卷编号是j+1,而非j
            if($NextRar.Contains("$CurrentRarBase.part$($j+1).rar")){
                Write-Host "Test Hit" -ForegroundColor Green
                [void] $RarGroup.Add($NextRar)
            }
        }

        $RarGroups.Add($RarGroup)
    }

注意:此方案依赖AllRarfiles数组严格按分卷编号排序,否则会匹配错误。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.12 11:25:17