首页 > 解决方案 > 带有 PowerShell 循环的 JSON 文件

问题描述

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

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

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

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

给你一个背景,假设我有 2x CSV 文件,一个名为 File1.csv 和另一个 File2.csv,我想遍历 Documents 文件夹中的所有 .csv 文件并创建一个附加名称的 .json 输出文件给它。

理想情况下,我想将其称为 .ps1 文件,甚至是命令行 bat 文件,因为 SSIS 最终会调用它。

标签: powershell

解决方案


用于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 的数据。


推荐阅读