Если файлы большие, вы можете объединить их в текстовые документы. Это намного быстрее, чем импорт csv-объектов, но для этого требуются свойства и порядок их размещения во всех файлах.Пример:
$files = Get-ChildItem "*.csv"
#Get header
$text = @(Get-Content -Path $files[0].FullName -TotalCount 1)
$files | ForEach-Object {
#Get text but skip header
$text += Get-Content -Path $_.FullName | Select-Object -Skip 1
}
#Save merged csv
$text | Set-Content Output.csv
output.csv
Name;Age;Marks;Class
A;15;100;5
B;20;88;6
C;11;99;2
Вы могли бы оптимизировать его еще больше, заменив Get-Content
для [System.IO.File]::ReadAllLines()
и т.д., но я пропустил, что сейчас, как это сложнее/трудно читать.
UPDATE: Добавлено альтернативное решение, которое сохраняет часть выходного файла для части, как предложил Ansgar.
$outputfile = "Output.csv"
$files = Get-ChildItem "*.csv"
#Get header
Get-Content -Path $files[0].FullName -TotalCount 1 | Set-Content -Path $outputfile
$files | ForEach-Object {
#Get text but skip header
Get-Content -Path $_.FullName | Select-Object -Skip 1
} | Add-Content -Path $outputfile
Вы женаты на powershell для выполнения этой задачи или можете использовать Excel? –
Вы упоминаете CSV в какой-то момент, но вы называете их листами excel. Все ли они CSV? Или они действительно листы Excel? – EBGreen
Все CSV. Простите за это. – Powershel