带有PowerShell循环的JSON文件通过

时间:2019-04-05 08:49:04

标签: powershell

我面临着将1个或多个CSV文件转换为JSON的任务。

我已经可以使用以下命令做到这一点:

Import-Csv "File1.csv" |
    ConvertTo-Json -Compress |
    Add-Content -Path "File1_output.JSON"

但是,一次只能处理一个文件,您必须手动输入文件名。

给你一个背景,假设我有2个CSV文件,一个叫File1.csv,另一个叫File2.csv,我想循环浏览Documents文件夹中的所有.csv文件,并创建一个.json输出文件,该名称后缀。

理想情况下,我想将其称为.ps1文件或什至命令行bat文件,因为SSIS最终将对其进行调用。

1 个答案:

答案 0 :(得分:2)

使用Get-ChildItem枚举文件,并使用循环处理枚举文件。

这样的事情应该可以转换当前工作目录中的所有CSV:

Get-ChildItem -Filter '*.csv' | ForEach-Object {
    Import-Csv $_.FullName |
        ConvertTo-Json -Compress |
        Set-Content ($_.Basename + '_output.json')
}

请注意,这将分别转换每个文件。如果要将所有CSV合并到一个JSON文档中,则可以消除循环

Get-ChildItem -Filter '*.csv' |
    Import-Csv |
    ConvertTo-Json -Compress |
    Set-Content 'output.json'

至少与CSV具有相同的列相同。

否则,您需要首先定义生成的JSON文件的所需结构,然后以符合所需输出格式的方式合并来自CSV的数据。