Powershell IF 条件没有以我预期的方式触发。不确定我做错了什么



我正在编写一个简单的脚本,使用7zip的命令行提取文件夹中的存档,然后删除原始存档。

我的脚本有一部分没有按照我期望的方式运行。我不能让我的if语句正确触发。下面是一段代码:

if($CurrentRar.Contains(".part1.rar")){
[void] $RarGroup.Add($CurrentRar)
# Value of CurrentRar: 
# Factory_Selection_2.part1.rar
$CurrentRarBase = $CurrentRar.TrimEnd(".part1.rar")
# Value: Factory_Selection_2
for ($j = 1; $j -lt $AllRarfiles.Count; $j++){
$NextRar = $AllRarfiles[$j].Name
# Value: Factory_Selection_2.part2.rar
if($NextRar.Contains("$CurrentRarBase.part$j.rar")){
Write-Host "Test Hit" -ForegroundColor Green
# Never fires, and I have no idea why
# [void] $RarGroup.Add($NextRar)
}
}
$RarGroups.Add($RarGroup)
}

if($NextRar.Contains("$CurrentRarBase.part$j.rar"))是我不能到达的线。

如果我将其缩短为if($NextRar.Contains("$CurrentRarBase.part")),则触发true。但只要我添加内联$j它总是触发假。我试过将$j铸造成字符串,但它仍然不起作用。我错过了什么愚蠢的东西吗?

谢谢你的帮助。

问题似乎是您的for语句和数组/列表是零索引的事实(意味着它们从0开始)。
在您的情况下,$AllRarfiles的索引0可能是part1和您的for语句以1开始,但索引1的文件名不包含part1($NextRar.Contains("$CurrentRarBase.part$j.rar"),但part2($j + 1)。

作为表比较

tbody> <<tr>12
Index/$j Value 用于与Index进行比较的构建字符串
0Factory_Selection_2.part1. rarFactory_Selection_2.part0. rar
Factory_Selection_2.part2. rarFactory_Selection_2.part1. rar
Factory_Selection_2.part3. rarFactory_Selection_2.part2. rar
3Factory_Selection_2.part4. rarFactory_Selection_2.part3. rar

最新更新