从CSV中获取阵列中的最大价值

时间:2016-04-21 13:49:45

标签: arrays powershell measure

我有一个csv,我有钥匙,他们分配了数字。当我向csv添加一个密钥时,它将被分配下一个值。

我的代码完成了所有这些,除非我的计算错误,因为我无法让代码返回已分配的数字的最大值。

我的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调用$greatestvalue = [int]$assignednumbers | Measure -Maximum时,我会获得csv中每个项目的最大属性列表。它应该返回值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 "

2 个答案:

答案 0 :(得分:2)

您正在尝试获得最多一个数字。并且$ maximumvalue只获得最后一个值。要修复它,请更改

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

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

答案 1 :(得分:1)

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

$num = Import-Csv "E:\1.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