我有一个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 "
答案 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