1. ホーム
  2. powershell

[解決済み】PowerShellで文字列を整数に変換する方法

2022-03-17 18:58:43

質問

私は番号付きのディレクトリのリストを持っています。私は最も高い番号を見つけ、それを1つ増やし、その増分の値で新しいディレクトリを作成しなければなりません。私は以下の配列を並べ替えることができますが、最後の要素は文字列であるため、増分することができません。

この下の配列の要素を整数に変換するにはどうすればよいですか?

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

Name
----
11
2
1

解決方法は?

変数の前に型を指定することで、その型を強制的に変更することができます。これは、以下のように呼ばれます。 (ダイナミック)キャスティング ( 詳細はこちら ):

$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 ).