脚本
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)
...
问题
这个循环无限重复。
在第一个循环(按预期运行)之后,第二个循环继续使用第一个循环中的部分信息。也就是说,在第二个循环中,它不再使用
a[4]=002
for$newNumber
,而是继续使用a[1]=001
for$newNumber
。同样,它不再使用a[5]=11
for 循环 2,而是使用a[2]=10
for 循环 2。
答案1
我不明白为什么,但在周围添加双引号$oldNumber.ext
解决Get-ChildItem -file -filter "$oldNumber.ext"
了这个问题。
无限循环问题
无限循环是由这一行引起的:
for ($i=0; $i -le $arrayCount; $i+=3) {
应该-le
是-lt