【问题标题】:Add new 1st column to CSV based on filename根据文件名将新的第一列添加到 CSV
【发布时间】:2020-04-01 07:43:08
【问题描述】:

我有一个包含 500 个 CSV 的文件夹,每个文件夹包含 80.000 行应用程序。我需要在第一列中添加日期(基于文件名)。

我从各种样本中提取的脚本几乎完成了它应该做的事情。它为文件夹中的每个文件创建一个新文件,在第一个位置有一个新列,标题名称正确,但该列中的所有行都是空的。

文件名示例:2020-03-31_xxxxxxxx.csv

如果有人能看看这个就太好了。

$items = Get-ChildItem -Path "C:\Temp\Data\*.csv"

for ($i=0; $i -lt $items.Count; $i++)

{

$outfile = $items[$i].FullName + "out"

Import-Csv $items | 

Select-Object @{Name='Date';Expression={Get-ChildItem -Name $items.Name.SubString(0,9)}},* | 
Export-Csv -NoTypeInformation -delimiter ";” $outfile

}

在导出中也应该进行转换,因为 CSV 中没有“”,但我也无法添加它,而不会出现错误。

(ConvertTo-Csv -NoTypeInformation -delimiter ";”) | Foreach-Object { $_ -replace  '"', '' } | Out-File $outfile

【问题讨论】:

    标签: powershell export-to-csv


    【解决方案1】:

    试试这个:

    $items = Get-ChildItem -Path "C:\Temp\Data\*.csv" 
    for ($i=0; $i -lt $items.Count; $i++) { 
    
    $outfile = $items[$i].FullName + "out" 
    
    Import-Csv $items[$i] | Select-Object @{n='Date';e={$items[$i].Fullname.ToString().Split("_")[0]}},* | Export-Csv -NoTypeInformation -delimiter ";” -Force $outfile 
    }
    

    您没有选择日期,但您正在获取每个文件的子项信息。所以你得到了丑陋的 csv 格式。此外,您一次导入所有 csv 而不是一个。

    【讨论】:

    • Great Wasif,我需要将“...Fullname.ToString().Split...”更改为“...Basename.ToString().Split...”,因为没有列中的完整路径。有什么办法可以去掉导出中的“”?在导出第一个之后,然后所有其他都被包裹在“”中。
    • $Test = Get-Content $outfile $Test.Replace('","',",").TrimStart('"').TrimEnd('"') |输出文件 $outfile -Force -Confirm:$false
    【解决方案2】:

    感谢 Wasif Hasan,我最终得到了这段代码。 不需要删除引号,因为 CSV 中有文本字段,如果我尝试删除引号会破坏:

    $items = Get-ChildItem -Path "C:\Temp\Data\*.csv" 
    for ($i=0; $i -lt $items.Count; $i++) { 
    
    $outfile = $items[$i].FullName + "out" 
    
    $delimiter = ';'
    
    Import-Csv $items[$i] -delimiter $delimiter | Select-Object @{n='Date';e= 
    {$items[$i].Basename.ToString().Split("_")[0]}},* |  Export-Csv - 
    NoTypeInformation -delimiter $delimiter -Force $outfile 
    
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2021-07-15
      • 1970-01-01
      • 2021-04-01
      • 2022-01-08
      • 1970-01-01
      • 2020-11-06
      • 2017-10-30
      相关资源
      最近更新 更多