【问题标题】:Check CSV for object not matching?检查 CSV 中是否存在不匹配的对象?
【发布时间】:2018-12-20 21:53:37
【问题描述】:

可能是一个非常基本的问题,但初步搜索并没有得到太多回报。我正在编写一个脚本,它采用 $CSC(这是用户输入)将其与一个名为“CSC”的 .csv 对象进行比较,然后根据它填充相关信息。

$CSC = "1100 4WWW"   #Hardcoded value to test against #CSC are always <#### #ChChCh>
$roster = Import-Csv <my path>

Foreach ($row in $roster) {
    If ($CSC -eq $row.CSC) { 
        $Department = $row.Department
        $Division = $row.Division
        $Street = $row.Street
        $City = $row.City
        $State = $row.State
        $Zipcode = $row.Zipcode
        $OfficePhone = $row.Phone
        $Country = $row.Country
    } Else {    }
}

这很好,但我如何检查用户输入的 $CSC 是否与列表中的一个不匹配?

创建 else 或创建 elseif ($CSC -ne $row.CSC) 显然会为除匹配行之外的每一行返回一个值。我猜我应该使用嵌套的 if 语句,但是自学我不确定最好的方法是什么。谢谢。

【问题讨论】:

  • 你能告诉我们$CSC的定义/赋值吗?它是一个整数吗?一个整数数组?一个字符串? $roster 和一个简短的 CSV 示例也可能有用
  • $id -notin $roster.CSC?
  • @MathiasR.Jessen 我理解我写它的方式令人困惑。为清晰起见进行了更新。我认为 CSV 内容并不真正相关,因为我已经在 If 语句中正确使用了它以及我对逻辑的问题

标签: powershell csv if-statement powershell-3.0 verification


【解决方案1】:

我能想到一些你可以做的事情。

选项 1:使用 -match 运算符。 [不推荐,因为它有一些正则表达式约束,但无论如何我都会将它作为一个选项呈现]

$CSC = "1100 4WWW"   #Hardcoded value to test against #CSC are always <#### #ChChCh>
$roster = Import-Csv <my path>

if ($roster -match $CSC)
{
    Foreach ($row in $roster) {
        If ($CSC -eq $row.CSC) { 
            $Department = $row.Department
            $Division = $row.Division
            $Street = $row.Street
            $City = $row.City
            $State = $row.State
            $Zipcode = $row.Zipcode
            $OfficePhone = $row.Phone
            $Country = $row.Country
        } Else {    }
    }
}
else
{
   #your 'not a match' code goes here
}

选项 2:设置标志

$CSC = "1100 4WWW"   #Hardcoded value to test against #CSC are always <#### #ChChCh>
$roster = Import-Csv <my path>

$flag = $false
Foreach ($row in $roster)
{
    If ($CSC -eq $row.CSC)
    { 
        $Department = $row.Department
        $Division = $row.Division
        $Street = $row.Street
        $City = $row.City
        $State = $row.State
        $Zipcode = $row.Zipcode
        $OfficePhone = $row.Phone
        $Country = $row.Country

        $flag = $true
    }
    Else {    }
}

If (!$flag)
{
    #your 'not a match' code goes here
}

【讨论】:

  • 谢谢,我之前尝试过第二个,但不确定这是否是一个好方法。
猜你喜欢
  • 2021-09-16
  • 2012-07-27
  • 2013-09-26
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多