Előrehaladás jelzése (write-progress)

Ha már időmérés és várakozás, akkor érdemes megemlíteni, hogy szép „progress bar”-t, azaz előrehaladás-jelzőt is megjeleníthetünk PowerShellben a write-progress  cmdlet segítségével. Ez főleg akkor hasznos, ha időigényesebb valamelyik parancssorunk, szkriptünk és nyomon szeretnénk követni, hogy ténylegesen hol is tart a futás. Példaként nézzünk egy „analóg” órát:

 

 Óra

    12

    [oooooooooooooooooooooooooooooooo                                ]

   Perc

      53

      [oooooooooooooooooooooooooooooooooooooooooooooooooooooo        ]

     MP

        53

        [oooooooooooooooooooooooooooooooooooooooooooooooooooo        ]

 

[91] PS C:\>while ($true) {

>> $t = Get-Date

>> $óra = $t.hour

>> $perc = $t.Minute

>> $mp = $t.Second

>> Write-Progress -Activity "Óra" -status "$óra" -Id 1 -PercentComplete ($óra/2
4*100)

>> Write-Progress -Activity "Perc" -status "$perc" -Id 2 -ParentId 1 –PercentCo
mplete ($perc/60*100)

>> Write-Progress -Activity "MP" -status "$mp" -ParentId 2 –PercentComplete ($m
p/60*100)

>> Start-Sleep -Seconds 1

>> }

>> 

Sajnos nyomtatásban nem annyira „szép” a kép, nem látszik az ablak tetején a türkizes háttérszínem, de a kis karikákból álló előrehaladás-jelzőt azért látható. Maga a szkript, ami ezt produkálja a karikás sorok alatt található. Egy while ciklusban folyamatosan kiolvasom az aktuális rendszeridőt, szétszedem külön óra, perc, másodpercre. Ezután jön a lényegi rész. Az egyes „csíkoknak” adhatok címkét (Activity paraméter), státusz címkét (Status), azonosító számot (Id paraméter), az előrehaladás értékét (0 és 100 közötti szám, PercentComplete paraméter). Látszik, hogy a kijelzők egymásba is ágyazhatók, ha definiálom a ParentID paraméterrel a „szülő” csíkot. Ekkor a „gyerek” a szülő alatt fog megjelenni, kicsit beljebb.



Word To HTML Converter