我有一个带数字的目录列表.我必须找到最高的数字并将其递增1并使用该增量值创建一个新目录.我能够对下面的数组进行排序,但我无法增加最后一个元素,因为它是一个字符串.
如何将此数组元素转换为整数?
PS C:\Users\Suman\Desktop> $FileList
Name
----
11
2
1
Run Code Online (Sandbox Code Playgroud)
sod*_*low 93
您可以在强制类型之前指定变量的类型,它称为(动态)强制转换(此处有更多信息):
$string = "1654"
$integer = [int]$string
$string + 1
# Outputs 16541
$integer + 1
# Outputs 1655
Run Code Online (Sandbox Code Playgroud)
例如,下面的代码片段为每个对象添加$fileList
一个IntVal
具有该属性的整数值的Name
属性,然后$fileList
对此新属性进行排序(默认为升序),获取最后一个(最高IntVal
)对象的IntVal
值,递增它并最终创建以它命名的文件夹:
# For testing purposes
#$fileList = @([PSCustomObject]@{ Name = "11" }, [PSCustomObject]@{ Name = "2" }, [PSCustomObject]@{ Name = "1" })
# OR
#$fileList = New-Object -TypeName System.Collections.ArrayList
#$fileList.AddRange(@([PSCustomObject]@{ Name = "11" }, [PSCustomObject]@{ Name = "2" }, [PSCustomObject]@{ Name = "1" })) | Out-Null
$highest = $fileList |
Select-Object *, @{ n = "IntVal"; e = { [int]($_.Name) } } |
Sort-Object IntVal |
Select-Object -Last 1
$newName = $highest.IntVal + 1
New-Item $newName -ItemType Directory
Run Code Online (Sandbox Code Playgroud)
Sort-Object IntVal
不需要,所以你可以删除它,如果你愿意
[int]::MaxValue = 2147483647
所以你需要使用[long]
超出这个值的类型([long]::MaxValue = 9223372036854775807
).
归档时间: |
|
查看次数: |
152096 次 |
最近记录: |