У меня есть большой набор текстовых файлов ASCII, которые мне нужно изменить с помощью содержимого, найденного в файле, а затем объединить их все в один сводный файл. До сих пор я добивался умеренного успеха, используя пошаговый подход. Но я хотел бы сделать это одним махом и не смог понять это. Я написал скрипт в PowerShell, который будет делать то, что я хочу для одного файла, но я не могу понять, как изменить его для всех файлов в папке. Я боролся с зацикливанием и окончательными разделами конкатенации файлов.
Вот моя основная файловая структура:
fILE1.TXT
Line1 - abc123 - заголовок (я хочу удалить символы 2,3 и 4 отсюда и добавить к строкам данных)
Линия2 - данные1
Линия3 - данные2
LineN - abc123 - нижний колонтитул (копия заголовка)
file2.txt
Линия 1 - efg456
Линия2 - данные3
Line3 - data4
LineN - efg456
FileN.txt
Line1 - hij789
Линия2 - данные5
Line3 - data6
LineN - hij789
Я хотел бы, чтобы в конечном выходном файле была следующая структура с удаленными верхним и нижним колонтитулами и содержимым, извлеченным из верхнего колонтитула в новом столбце в начале файла (это файлы фиксированной ширины):
final.txt
Line1 - bc1data1
Line2 - bc1data2
Line3 - fg4data3
Line4 - fg4data4
Line5 - ij7data5
Line6 - ij7data6
Я смог решить это для одного файла и поместил код ниже:
cd "C:\Data\Files\"
$S1 = Get-Content File1.txt -First 1
$S2 = $S1.Substring(2,3)
Get-Content File1.txt | ForEach-Object {Add-Content a.txt "$S2$_"}
Get-Content a.txt | Select -Skip 1 | Select -SkipLast 1 | Set-Content out.txt
# extract header line
# limit to characters of interest
# append to the beginning of each line in file
# append all files together w/o first & last line
В идеале я мог бы сделать это и без мусорного файла a.txt, но пока мне удалось заставить его работать, записав отдельный файл. Буду признателен за любые предложения / советы, так как я довольно новичок в PowerShell (несколько часов практики).