我有很多存储在目录中的csv文件。 在每个csv文件中,需要通过powershell将名称添加为列。
示例
档案位置:<SERVERNAME>\Export\FILENAME1.CSV
内容:
1232;Description;a1
1232;Description;a2
结果必须是:
1232;Description;a1;FILENAME1.CSV
1232;Description;a2;FILENAME1.CSV
有人可以帮我这个吗?
答案 0 :(得分:2)
以下内容将Filename列附加到目录中的每个.CSV文件:
Get-ChildItem *.csv | ForEach-Object {
$CSV = Import-CSV -Path $_.FullName -Delimiter ";"
$FileName = $_.Name
$CSV | Select-Object *,@{N='Filename';E={$FileName}} | Export-CSV $_.FullName -NTI -Delimiter ";"
}
<强>解释强>
Get-ChildItem
获取名为* .csv ForEach-Object
遍历每个文件,并使用Import-CSV
将其内容作为PowerShell对象加载$FileName
Select-Object
添加名为Filename
的计算属性和$FileName
变量的值Export-CSV
回写原始文件。 -NTI
(NoTypeInformation)开关用于确保不包含PowerShell对象标题行。答案 1 :(得分:0)
Mark Wragg的PowerShell代码可以工作,但是我不得不将定界符更改为,而不是;以便在Excel中打开。我试图找出如何将文件名附加到第一列而不是最后一列,因为我的文件没有相同数量的字段,因此它们无法对齐。