Creator
Creator

Reputation: 1

Сalculating the time difference in PowerShell script

I understand that this code is far from perfect and I ask for help how to write it correctly? I have a function in my script for calculating the time difference. How can it be improved or simplified?

function CountIntervals {
    param (
        [string]$logfile
    )
    if (Test-Path -Path $logfile) {
        $info_line2.Text.Clear
        $intervals = New-Object System.Collections.ArrayList
        $lines = Get-Content $logfile -Tail 10 -Encoding ansi
        foreach ($line in $lines) {
            $time = $line.Substring(0, $line.IndexOf(";"))
            $intervals += $time
            [int64]$wght = (($line -split ";")[2]) -replace "\s"
            $err = " - $($wght) $(($line -split ";")[3])"
        }
        $int9 = ([datetime]$intervals[9] - [datetime]$intervals[8]).TotalSeconds
        $int8 = ([datetime]$intervals[8] - [datetime]$intervals[7]).TotalSeconds
        $int7 = ([datetime]$intervals[7] - [datetime]$intervals[6]).TotalSeconds
        $int6 = ([datetime]$intervals[6] - [datetime]$intervals[5]).TotalSeconds
        $int5 = ([datetime]$intervals[5] - [datetime]$intervals[4]).TotalSeconds
        $int4 = ([datetime]$intervals[4] - [datetime]$intervals[3]).TotalSeconds
        $int3 = ([datetime]$intervals[3] - [datetime]$intervals[2]).TotalSeconds
        $int2 = ([datetime]$intervals[2] - [datetime]$intervals[1]).TotalSeconds
        $int1 = ([datetime]$intervals[1] - [datetime]$intervals[0]).TotalSeconds
        $sum = [math]::Round((($int9+$int8+$int7+$int6+$int5+$int4+$int3+$int2+$int1)/9),2)
        $result += "$($int9), $($int8), $($int7), $($int6), $($int5), $($int4), $($int3), $($int2), $($int1), $($sum)"
        if ($wght -gt 99999999999) {
            $result = @($result, $err)
        } elseif (($wght -lt 99999999999) -and ($wght -gt 500)) {
            $result = @($result, " - Взвешивание. На весах: $($wght) кг")
        }
        return $result
    }
}

At the input we have a text file with approximately the following contents:

17:16:16; 2;               0;           0;           0;           0;           0;
17:16:21; 2;               0;           0;           0;           0;           0;
17:16:25; 2;               0;           0;           0;           0;           0;
17:16:29; 2;               0;           0;           0;           0;           0;
17:16:33; 2;               0;           0;           0;           0;           0;
17:16:37; 2;               0;           0;           0;           0;           0;
17:16:41; 2;               0;           0;           0;           0;           0;
17:16:45; 2;               0;           0;           0;           0;           0;
17:16:49; 2;               0;           0;           0;           0;           0;
17:16:54; 2;               0;           0;           0;           0;           0;
17:16:58; 2;               0;           0;           0;           0;           0;
17:17:02; 2;               0;           0;           0;           0;           0;
17:17:06; 2;               0;           0;           0;           0;           0;
17:17:11; 2;               0;           0;           0;           0;           0;

The output is a line that looks something like this:

3940838125_1_2025-02-28.log (A) -  4, 4, 4, 5, 4, 4, 4, 4, 4, 4.11

Thanks in advance for your help and tips

Upvotes: 0

Views: 49

Answers (0)

Related Questions