从 CSV 中获取数组中的最大值

Get Greatest Value in Array from CSV

我有一个 csv,其中有分配有编号的键。当我向 csv 添加一个键时,它将被分配下一个值。

除了我的计算错误之外,我的代码执行了所有这些操作,因为我无法使代码达到 return 已分配数字的最大值。

我的 csv 看起来像:

Key,Count
9383, T-1
V-102,T-2
V-4982,T-65
85712, T-13

我的代码是:

$num = Import-Csv "$file1.csv" | Foreach {"$($_.Count)"}

for ($i=0; $i -lt $num.Count; $i++) 
{
     [string]$assignednumbers = $num[$i]

      #Remove T in front of numbers
      [string]$prefix = "T-"
      if ($assignednumbers.StartsWith($prefix)) 
      {
         $assignednumbers = $assignednumbers.Replace($prefix, [string]::Empty)
   }

    $greatestvalue = ([int]$assignednumbers | Measure -Maximum).Maximum
}

我的线路有问题 $greatestvalue = ([int]$assignednumbers | Measure -Maximum).Maximum 当我只用 $greatestvalue = [int]$assignednumbers | Measure -Maximum 调用 $greatestvalue 时,我得到了我的 csv 中每个项目的最大属性列表。它应该 return 值为 65。

这是我要求添加号码并将其添加到 csv 的地方(这里没有问题

#which key do you want to add
$key = Read-Host "Please Input new Key"

#getting t number
$addingnum = $greatestvalue + 1
$newnumber = "T-$addingnum"


#Get new key information
if ($key -gt 0)
{
[string]$key =$key
write-host -foregroundcolor green "The new Key is $key and has been assigned $newnumber"
}

#add vkey from input to csv
$NewLine = "{0},{1}" -f $newvkey,$newnumber
$NewLine | add-content -path "

你每次都覆盖你的$greatestvalue。您需要在循环之外定义它,并且仅当当前值大于上一次迭代中已有的值时才进行更改:

$num = Import-Csv "E:.csv" | Foreach {"$($_.Count)"}
$greatestvalue = 0
for ($i=0; $i -lt $num.Count; $i++) 
{
   [string]$assignednumbers = $num[$i]

    #Remove T in front of numbers
    [string]$prefix = "T-"
    if ($assignednumbers.StartsWith($prefix)) 
    {
       $assignednumbers = $assignednumbers.Replace($prefix, [string]::Empty)
 }
if ($greatestvalue -lt ([int]$assignednumbers | Measure -Maximum).Maximum)
  {
    $greatestvalue = ([int]$assignednumbers | Measure -Maximum).Maximum
  }
}
$greatestvalue

您正在尝试获取最多一个数字。 $greatestvalue 只是得到最后分配的值。要修复它,请更改

$greatestvalue = ([int]$assignednumbers | Measure -Maximum).Maximum

if ($greatestvalue -lt [int]$assignednumbers) {
    $greatestvalue = $assignednumbers
}