能否用PowerShell批量编辑CSV并转换为制表符分隔TXT?
批量CSV文件处理的PowerShell实现方案
完全可以用PowerShell实现你的需求,以下是对应所有操作的脚本:
# 遍历目标目录下的所有CSV文件(替换为你的实际文件路径) Get-ChildItem -Path "C:\Your\Target\Directory" -Filter *.csv | ForEach-Object { # 导入CSV文件,指定分隔符为分号 $csvData = Import-Csv -Path $_.FullName -Delimiter ';' # 1. 保留需要的列(等价于删除指定列);2. 将"available"重命名为"quantity" $processedData = $csvData | Select-Object id, price, @{Name='quantity'; Expression={$_.available}} # 3. 删除quantity值为0的行 $filteredData = $processedData | Where-Object { $_.quantity -ne 0 } # 4. 添加固定值为1234的"codice"列 $finalData = $filteredData | Add-Member -NotePropertyName codice -NotePropertyValue 1234 -PassThru # 5. 导出为制表符分隔的TXT文件,沿用原文件名替换后缀 $outputPath = $_.FullName -replace '\.csv$', '.txt' $finalData | Export-Csv -Path $outputPath -Delimiter "`t" -NoTypeInformation -Encoding UTF8 }
脚本细节说明:
- 若只需处理单个CSV文件,可直接去掉
Get-ChildItem循环,替换为$csvData = Import-Csv -Path "你的单个文件路径.csv" -Delimiter ';'。 - 通过
Select-Object指定保留列的方式实现“删除多余列”的需求,同时用计算属性完成列名重命名。 Where-Object过滤规则直接剔除库存为0的条目,确保输出数据有效性。Export-Csv的-NoTypeInformation参数会移除PowerShell默认生成的类型信息行,-Encoding UTF8保证跨环境的字符兼容性。
内容的提问来源于stack exchange,提问作者Matteo Lanzoni
相关产品推荐
相关产品推荐

