【问题标题】:Reading values from CSV and output them in the format Column1:Row1, Column2:Row1从 CSV 读取值并以 Column1:Row1、Column2:Row1 格式输出
【发布时间】:2016-11-23 05:11:26
【问题描述】:

我正在尝试编写简单的 PowerShell 代码以从 CSV 读取两列值并以类似

的方式打印
1

201

2

202
.
.

CSV 文件:

PRODID  DEVID   Name

1       201    Application

2       202    Product

3       203    Component

4       204    Author

5       205    Version

Powershell 代码:

$DEVID = Import-Csv C:\test\install.csv | % {$_.DEVID}
$PRODID = Import-Csv C:\test\install.csv | % {$_.PRODID}

ForEach ($DEVI in $DEVID)
{
    Write-Host $DEVI

    ForEach ($PRODI in $PRODID)
    {[enter image description here][1]
      Write-Host $PRODI     
    }
} 

但我没有得到预期的输出,尽管我尝试了 break, continue 语法。 在这种情况下谁能帮助我?

【问题讨论】:

  • {$_.PRODID} 而不是 {$.PRODID}
  • 感谢 Micky 的回复,但我可以从 CSV 读取值,但不是我期望的格式。第二个 foreach 循环将继续,除非它完成了从第二列中读取值。
  • 每个 ProdID 都有一个唯一的 DevID?
  • 是的,每个 ProdID 都有唯一的 DevID。当前代码给我的输出像 201->1->2->3->4->5; 202->1->2->3->4->5.......(->下一行)。所以它不会回到第一个 foreach 循环,直到第二个 foreach 完成从第二列读取所有值)
  • 试试Import-Csv C:\test\install.csv | % { write-host $_.PRODID;write-host $_.DEVID}

标签: csv powershell foreach powershell-3.0 export-to-csv


【解决方案1】:

您只需导入一次 csv。然后只需对其进行迭代并输出您想要的记录:

Import-Csv 'C:\test\install.csv' | Foreach { 
   $_.PRODID; $_.DEVID; 
}

输出:

1
201
2
202
3
203
4
204
5
205

如果这不起作用,您必须向我们展示您的 csv 文件。

【讨论】:

  • 这是 CSV 文件:PRODID DEVID 名称 1 201 应用程序 2 202 产品 3 203 组件 4 204 作者 5 205 版本
  • 你能上传你的csv吗? Import-CSV cmdlet 似乎无法正确读取它
  • 我附上了一张图片。如果你能看到,请告诉我。
  • 图片没有帮助。只需将 csv 文件上传到任何地方
  • 你可以从这里下载那个 CSV drive.google.com/… 让我把整个场景放在这里,让你清楚地了解我一直在努力实现的目标,我正在尝试从 CSV 中读取两列的值(第一列和第二列)应在 test.xml 文件中搜索第二列中的每个值,如果找到该值应替换为第一列的同一行。例如 Script 应该从 csv 读取 201,在 test.xml 中搜索,如果找到,201 应该被 1 替换。
猜你喜欢
  • 2015-09-29
  • 2014-07-11
  • 1970-01-01
  • 1970-01-01
  • 2017-09-18
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多