Я пытаюсь разобрать .txt файл через каталоги (эта часть в порядке).
Эти файлы являются отчетами и содержат списки серийных номеров, мне также удалось получить хороший список.
Каждый файл содержит много последовательных и одну дату, я хотел бы создать массив, где первый столбец будет серийным номером, а второй - повторяющейся датой, и именно там я потерпел неудачу.
Как повторить эту дату для всех сериалов и оформить ее в файл CSV?
Пример файла для разбора: Имя файла: [Калибровка - Проверка] [Sonde T Cryo] [17-01-2019 14h51mn24] .txt
Début de <<Calibrage / Vérification>>, <<Sonde T Cryo>> Le 17-01-2019 14h51mn24
******************************************************************************
** Conditions de mesures **
******************************************************************************
Nom de l'opérateur : AF
Condition de mesures :
Température : 21°C
Hygrométrie : 40%HR
Préssion atmosphérique : 980 HPA
Commentaire : NIM F85 / NIM F317 / NIM F100 / NOUVELLES SONDES NUMT 3M. 12199
Période de mesure = 15s
Nombre de point de mesure = 5
******************************************************************************
** Mesure Sonde en mode VERIFICATION (Moyenne) **
******************************************************************************
Mesure Brut Moyenne
Palier 1 (17-01-2019 23h51mn24)
Sonde 01 -18,263 -18,263 -18,263 -18,293 -18,263 -18,269
Sonde 02 -18,351 -18,361 -18,371 -18,341 -18,351 -18,355
Sonde 03 -18,336 -18,336 -18,326 -18,346 -18,336 -18,336
Sonde 05 -18,357 -18,357 -18,357 -18,357 -18,337 -18,353
******************************************************************************
** Contrôle d’anomalie de la mesure **
** Ecart max toléré entre la sonde et la Ref est de +-10°C **
******************************************************************************
Aucune anomalie constatée
******************************************************************************
** Les appareils ci-dessous sont Calibrés Et Vérifiés. **
******************************************************************************
Le seuil de tolerance est : +/- 0,2°C
Sonde n°01 [ AE190150013] Sonde n°02 [ AE190150014]
Sonde n°03 [ AE190150017] Sonde n°05 [ AE190150018]
Sonde n°06 [ AE190150015] Sonde n°07 [ AE190150020]
Sonde n°08 [ AE190150012] Sonde n°09 [ AE190150016]
Sonde n°10 [ AE190150011] Sonde n°11 [ AE190150019]
Sonde n°20 [ AE190150001] Sonde n°21 [ AE190150002]
******************************************************************************
** Les appareils ci-dessous n'ont pas passés le test de calibrage. **
******************************************************************************
Sonde n°04 [ ] Sonde n°22 [ ]
Sonde n°23 [ ] Sonde n°24 [ ]
Sonde n°25 [ ] Sonde n°26 [ ]
Sonde n°27 [ ] Sonde n°28 [ ]
Sonde n°29 [ ] Sonde n°30 [ ]
Sonde n°31 [ ] Sonde n°32 [ ]
Fin de <<Calibrage / Vérification>>, <<Sonde T Cryo>> Le 18-01-2019 04h52mn54
Что я хотел бы получить:
дата в первой строке
и только серийные номера между "Les appareils ci-dessous sont Calibrés Et Vérifiés." и "Les appareils ci-dessous n'ont pas passés le test de calibrage."
$data = 'C:\Users\user\Desktop\DEV\2019\2019_01 Janvier\*.txt'
[char[]]$replace = '!@#$%^&*(){}[]":;,<>/|\+=`~ '''
$regex = ($replace | % {[regex]::Escape($_)}) -join '|'
Get-ChildItem $data -recurse |
Where-Object { $_.Name -match $RegEx} |
Rename-Item -NewName {$_.Name -replace $RegEx, '_'}
(Get-ChildItem $data -recurse).FullName |
Foreach-Object {
(Get-Content $_ -Raw).
Replace('** Les appareils ci-dessous sont Calibrés Et Vérifiés. **','§').
Replace("Le seuil de tolerance est:+/-0,2°C",' ').
Replace("Leseuildetoleranceest:+/-0,2°C",'').
Replace("Le seuil de tolerance est:+/-0,3°C",' ').
Replace("Leseuildetoleranceest:+/-0,3°C",'').
Replace("** Les appareils ci-dessous n'ont pas passés le test de calibrage. **",'§').
Replace('*','').
Replace('n°','').
Replace('Sonde','').
Replace(' ','').
Replace(' ','') |
Set-Content $_
}
$folders = 'C:\Users\user\Desktop\DEV\2019\2019_01 Janvier'
$files = Get-ChildItem -Path $Folders -Include *.txt -Force -Recurse
foreach ($File in $Files) {
Foreach ($FileContent in $File) {
$FileContent = Get-Content -Path $File
$date = [regex]::matches($File,'\d{2}-\d{2}-\d{4}').value
}
$serial_temp = $FileContent -ireplace "^[^\[]*\[\s*","" -ireplace "\s*\][^\[]*\[\s*","`r`n" -ireplace "\]"
$serial = [regex]::Matches($serial_temp, '§([^/)]+)§') |ForEach-Object { $_.Groups[1].Value }
[System.String]$Text = $serial
$Keys = $serial -ireplace "^[^\[]*\[\s*","" -ireplace "\s*\][^\[]*\[\s*","`r`n" -ireplace "\]"
Write-Host $Serial $date
}