powershell - 带有 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 最终会调用它。
解决方案
用于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 的数据。
推荐阅读
- audio - FFmpeg 检查音频通道是否静音
- java - 视图动画队列
- google-sheets - Gsheet 将部分时间添加到开始时间以计算结束时间
- php - 更新复选框 Codeigniter
- debugging - 如何在 Common LISP 上使用 Emacs 内置调试器查看局部变量?
- rust - 错误:在实例化 `func::<[closure]>` 时达到递归限制
- jquery - 无需重新加载的 Ajax ResponseText
- javascript - 如果 Blob URL 是不可变的,Media Source Extension API 如何使用它们来流式传输视频?
- javascript - 如何检查对象中是否存在相同的字符串?
- node.js - 如何计算 mongodb 集合中特定字段的实例