Hoe tekenreeks naar geheel getal te converteren in PowerShell

Ik heb een lijst met mappen met nummers. Ik moet het hoogste nummer vinden en het met 1 verhogen en een nieuwe map maken met die verhogingswaarde. Ik kan de onderstaande array sorteren, maar ik kan het laatste element niet verhogen omdat het een string is.

Hoe converteer ik dit onderstaande array-element naar een geheel getal?

PS C:\Users\Suman\Desktop> $FileList
Name
----
11
2
1

Antwoord 1, autoriteit 100%

U kunt het type van een variabele specificeren voordat het het type forceert. Het heet (dynamisch) casten(meer informatie is hier) :

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

$string + 1
# Outputs 16541

$integer + 1
# Outputs 1655

Als voorbeeld voegt het volgende fragment aan elk object in $fileListeen eigenschap IntValtoe met de gehele waarde van de Nameeigenschap, sorteert vervolgens $fileListop deze nieuwe eigenschap (de standaard is oplopend), neemt de laatste (hoogste IntVal) object’s IntValwaarde, incrementeel het en maakt ten slotte een map aan met de naam:

# 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 IntValis niet nodig, zodat u het kunt verwijderen als u zich bevordert .

[int]::MaxValue = 2147483647Dus u moet de [long]Type buiten deze waarde ([long]::MaxValue = 9223372036854775807).


Antwoord 2

Voorbeeld:

2.032 MB (2.131.022 bytes)

$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]

Het resultaat is 2131022 in geheel getal.


Antwoord 3

Gebruik:

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

Antwoord 4

Gebruik:

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

Antwoord 5

Nadat u de hoogste waarde hebt geselecteerd, wat “12” is in mijn voorbeeld, kunt u het dan als geheel en verhogen van uw waarde:

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

Other episodes