# The single output file.
$outFile = 'C:\folder\B.csv'
# Get all input CSV files as an array of file-info objects.
$inFiles = @(Get-ChildItem C:\folder -Filter A*.csv)
# How many *data* rows to extract from each input CSV
$count = 25
# Extract the header line (column names) from the first input file
# and write it to the output file.
Get-Content $inFiles[0] -First 1 | Set-Content -Encoding Utf8 $outFile
# Process all input files and append their first 25 *data* rows to the
# output file.
foreach ($file in $inFiles) {
Get-Content $_.FullName -First ($count+1) | Select-Object -Skip 1 |
Set-Content -Append -Encoding Utf8 $outFile
}
Обратите внимание на использование -Encoding Utf8
в качестве примера;отрегулируйте по мере необходимости;по умолчанию Set-Content
будет использовать кодировку "ANSI" в Windows PowerShell и без спецификации UTF-8 в PowerShell Core .
Предупреждение :Выполняя построчную обработку простого текста, вы полагаетесь на каждую текстовую строку , представляющую одну CSV строку данных ;это обычно true, но не обязательно.
Альтернативой является использование Import-Csv
и Export-Csv
для обработки файлов, но это (a) требует значительной обработкинакладные расходы и (b) неизменно заключают в двойные кавычки все значения столбцов, даже если они не были изначально (хотя обычно это не имеет значения).
При этом Import-Csv
и Export-Csv
, безусловно, лучший выборвсякий раз, когда вам нужно читать и интерпретировать данные (в отличие от простого копирования их в другом месте).
И наоборот, если производительность имеет первостепенное значение, описанный выше простой текстовый подход может быть значительно ускорен спрямое использование методов .NET, таких как [IO.File]::ReadLines()
или, если файлы достаточно малы, даже [IO.File]::ReadAllLines()
.
Что касается то, что вы пытались :
Get-Content "C:\folder\A*.csv" | select -First 25
Это не извлекает 25 строк из каждого файла, он собирает строкииз всех файлов, которые соответствуют шаблону (A*.csv
), а затем извлекают одиночный 25-элементный срез с начала.
Дополнительно, для вывода в одиночный CSV-файл вывода:
Вы должны убедиться, что в выходной файл записана только одна строка заголовка (строка с именами столбцов).
Затем за этой строкой заголовка следует 25 данных строк из каждого файла, то есть строки с номерами 2–26 .