Powershell 根据文件名向CSV添加新的第1列

Powershell 根据文件名向CSV添加新的第1列,powershell,export-to-csv,Powershell,Export To Csv,我有一个包含500个CSV的文件夹,每个文件夹包含80.000行应用程序。我需要在第一列中添加日期(基于文件名) 我从各种样本中提取的脚本几乎完成了它应该做的事情。它会为文件夹中的每一行创建一个新文件,第一位有一个新列,标题名称正确,但该列中的所有行都为空 文件名示例:2020-03-31_xxxxxxxx.csv 如果有人能看看这个就好了 $items = Get-ChildItem -Path "C:\Temp\Data\*.csv" for ($i=0; $i -lt $items.Co

我有一个包含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
试试这个:

$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。

多亏了Wasif Hasan,我最终得到了这段代码。 不需要删除引号,因为CSV中有文本字段,如果我尝试删除qoutes,这些字段将断开:

$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 

}

很好,Wasif,我需要将“…Fullname.ToString().Split…”更改为“…Basename.ToString().Split…”,因为列中没有完整路径。有什么办法可以去掉出口中的“”吗?与导出后一样,第一个文件和所有其他文件都包装在“$Test=Get Content$outfile$Test.Replace(“,”,“,”).TrimStart(“,”).TrimEnd(“)| Out File$outfile-Force-Confirm:$false”中