Powershell 无限循环并返回意外结果

Powershell 无限循环并返回意外结果

脚本


PS C:\folder>$a=@(100,001,10,101,002,11)

$arrayCount=$a.count

for ($i=0; $i -le $arrayCount; $i+=3) {
    $oldNumber=$a[$i]
    $oldNumber="{0:d3}" -f $oldNumber
    $newNumber=$a[$i+1]
    $newNumber="{0:d3}" -f $newNumber
    $folderNumber=$a[$i+2]
    $folderNumber="{0:d2}" -f $folderNumber

    Get-ChildItem -file -filter $oldNumber.ext |

            ForEach-Object {
            $newFile=$newNumber+" (BRP-16-"+$newNumber+"-F-06K48b-SC-A-CC-"+$folderNumber+")"
            
           #Rename-Item -Path $_.FullName -NewName $newFile
            
            echo $_.name
            echo $newFile
            echo ""
    }
}

结果


100.ext
100 (BRP-16-100-F-06K48b-SC-A-CC-10)

101.ext
100 (BRP-16-100-F-06K48b-SC-A-CC-10) #expected: 101 (BRP-16-101-F-06K48b-SC-A-CC-11)

100.ext
100 (BRP-16-100-F-06K48b-SC-A-CC-10) #loop starts repeating

101.ext
100 (BRP-16-100-F-06K48b-SC-A-CC-10)

...

问题


  1. 这个循环无限重复。

  2. 在第一个循环(按预期运行)之后,第二个循环继续使用第一个循环中的部分信息。也就是说,在第二个循环中,它不再使用a[4]=002for $newNumber,而是继续使用a[1]=001for $newNumber。同样,它不再使用a[5]=11for 循环 2,而是使用a[2]=10for 循环 2。

答案1

我不明白为什么,但在周围添加双引号$oldNumber.ext解决Get-ChildItem -file -filter "$oldNumber.ext"了这个问题。

无限循环问题


无限循环是由这一行引起的:

for ($i=0; $i -le $arrayCount; $i+=3) {

应该-le-lt

相关内容