$logFile = ".\logs\*.txt" $outputFile = ".\Diffusion2.csv" #Supprimer le fichier CSV de sortie s'il existe déjà if (Test-Path $outputFile) { Remove-Item $outputFile } $sw = [System.Diagnostics.Stopwatch]::StartNew() $results = Get-Content $logFile | ForEach-Object { $line = $_ if ($line -match "(\d{4})-(\d{2})-(\d{2})\s(\d{2}):(\d{2}):(\d{2}).*CLIP START\s+(.*)") { $date = "{0}/{1}/{2}" -f $Matches[3], $Matches[2], $Matches[1] $time = $Matches[4] + ":" + $Matches[5] + ":" + $Matches[6] $clipName = $Matches[7].Split("(")[0].Trim() # Ajouter le temps de début de clip à une liste de temps $startTimes.Add($time) "{0};{1};{2}" -f $date, $time, $clipName } elseif ($line -match "(\d{4})-(\d{2})-(\d{2})\s(\d{2}):(\d{2}):(\d{2}).*CLIP END") { $endTime = $Matches[4] + ":" + $Matches[5] + ":" + $Matches[6] # Calculer la durée de diffusion à partir des temps de début et de fin du clip $duration = [datetime]::ParseExact($endTime, "HH:mm:ss", $null) - [datetime]::ParseExact($startTimes[0], "HH:mm:ss", $null) $startTimes.RemoveAt(0) # Ajouter la durée au résultat existant $results[-1] += ";$duration" } } "Date;Time;ClipName;Duration" | Out-File -FilePath $outputFile -Encoding default $results | Out-File -FilePath $outputFile -Encoding default -Append $sw.Stop() Write-Host "Execution time: $($sw.Elapsed.TotalSeconds) seconds"