在PowerShell中自定义CSV文件并导出

1rhkuytd  于 2023-01-28  发布在  Shell
关注(0)|答案(1)|浏览(150)

我们应该在PowerShell中编辑CSV文件,然后导出该文件
CSV文件包含:

"ID";"date";"number"
"YYY-12345";"24.01.2023";"123456910"

现在,我们应该在ID块后添加“-001”,但适用于整个列
这就是现在的代码:

$folder_csv = 'C:\Abschluss'
$folder_fileout = 'C:\Abschluss\Ausgabe'

$files = Get-ChildItem $folder_csv -File -Filter *.csv 
foreach ($file in $files) {
    $data = Import-csv $($file.Fullname) -Delimiter ";" 
    foreach($dataset in $data) {
        $data.ID + "-001"
        $data | export-csv "$folder_fileout\test.txt" -Delimiter ";" -NoType -Encoding UTF8 -append
    }
}

它在PowerShell的控制台中显示结果,但不在创建的. txt文件中显示。

vptzau2j

vptzau2j1#

你已经很接近你的代码了,主要的问题是你现在正在做$data.ID + "-001",而$data实际上是完整的对象数组,你想引用$dataset(被枚举的对象)。除此之外,您似乎希望将所有Csv合并为一个,因此,您可以使用外部ForEach-Object循环而不是foreach来利用PowerShell管道:

$folder_csv = 'C:\Abschluss'
$folder_fileout = 'C:\Abschluss\Ausgabe'

Get-ChildItem $folder_csv -File -Filter *.csv | ForEach-Object {
    foreach($line in $_ | Import-csv -Delimiter ';') {
        # update the Id property of this object
        $line.Id = $line.Id + '-001'
        # output the updated object
        $line
    }
} | Export-Csv "$folder_fileout\test.txt" -Delimiter ";" -NoTypeInformation -Encoding UTF8

相关问题