如何在powershell中将字符串转换为整数

Sum*_*osh 49 powershell

我有一个带数字的目录列表.我必须找到最高的数字并将其递增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).

  • 如果它是一个长数,请使用 [long]"232312333123" (2认同)