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

时间:2015-11-14 10:00:38

标签: powershell

我有一个带数字的目录列表。我必须找到最高的数字并将其递增1并使用该增量值创建一个新目录。我可以对下面的数组进行排序,但是我无法增加最后一个元素,因为它是一个字符串。

如何将此数组元素转换为整数?

PS C:\Users\Suman\Desktop> $FileList

Name
----
11  
2   
1   

5 个答案:

答案 0 :(得分:74)

您可以在强制其类型之前指定变量的类型,它被称为(动态)投射more info here):

$string = "1654"
$integer = [int]$string

$string + 1
#outputs 16541

$integer + 1
#outputs 1655

例如,以下代码段向$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

Sort-Object IntVal不需要,因此如果您愿意,可以将其删除

[int]::MaxValue = 2147483647因此您需要使用超出此值的[long]类型([long]::MaxValue = 9223372036854775807)。

答案 1 :(得分:1)

$filelist=@(12,1,2)
$filelist | sort @{expression={$_[0]}} | 
% {$newName=[string]([int]$($_[0])+1)}
New-Item $newName -ItemType Directory

答案 2 :(得分:0)

$filelist=@("12","1","2")
$filelist | sort @{expression={[int]$_}} | % {$newName=[string]([int]$_+1)}
New-Item $newName -ItemType Directory

答案 3 :(得分:0)

示例:

  

2.032 MB(2,131,022字节)

$u=($mbox.TotalItemSize.value).tostring()

$u=$u.trimend(" bytes)") #yields 2.032 MB (2,131,022

$u=$u.Split("(") #yields `$u[1]` as 2,131,022

$uI=[int]$u[1]

结果是2131022的整数形式。

答案 4 :(得分:-2)

在我的示例中选择了最高值“12”后,您可以将其声明为整数并增加值

$FileList = "2","3","12"
$foldername = [int]$FileList[2]+1
$foldername