如何运行一个串行执行以下操作的PowerShell脚本?
使用此脚本将目录中所有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 ","}
将目录中的所有csv文件合并为一个csv文件
仅保留第一个csv的标题(第一行),并排除文件中的所有其他第一行。
类似于kemiller2002所做的here,除了一个带有csv输入和csv输出的脚本。
答案 0 :(得分:2)
Bill的答案允许您组合CSV,但不会将文件名添加到每行的末尾。我认为最好的方法是使用PipelineVariable
通用参数在ForEach
循环中添加它。
Get-ChildItem \inputCSVFiles\*.csv -PipelineVariable File |
ForEach-Object { Import-Csv $_ | Select *,@{l='FileName';e={$File.Name}}} |
Export-Csv \outputCSVFiles\newOutputFile.csv -NoTypeInformation
这应该可以实现你所寻找的目标。
答案 1 :(得分:1)
这是一般模式:
Get-ChildItem \inputCSVFiles\*.csv |
ForEach-Object { Import-Csv $_ } |
Export-Csv \outputCSVFiles\newOutputFile.csv -NoTypeInformation
确保输出CSV文件具有不同的文件名模式,或使用不同的目录名称(如本例所示)。
答案 2 :(得分:0)
如果你的csv文件总是没有相同的标题,你可以这样做:
a = *((double*) params)