如何针对目录中的所有CSV文件执行PowerShell脚本?

时间:2013-07-11 23:59:03

标签: powershell powershell-v2.0

我有一个脚本,我想对目录中的所有.csv文件执行。我知道我可以使用Get-ChildItems,但是如何仅针对。\中的.csv文件过滤它并执行我的脚本?

import-csv .\chapters.csv | 
    ConvertTo-Json -Compress | 
    ForEach-Object {$_ -creplace '""NULL""','null'} | 
    Out-File .\chapters.json

1 个答案:

答案 0 :(得分:2)

如果我理解你的要求,只需使用文件glob并将结果传递给 Import-CSV **。使用 Foreach-Object 循环捕获每个CSV文件的基本名称,以用于命名输出文件。

Get-ChildItem .\*.csv | Foreach-Object {
  $basename = $_.BaseName
  import-csv $_ | ConvertTo-Json -Compress | Foreach {$_ -creplace '""NULL""','null'} | Out-File ".\$basename.json"
}
顺便说一下, Get-ChildItem 结束时没有“s”。