Jak wyczyścić tylko niektóre treści z ekranu?

głosy
42
Function Test{
    while($true){
    write-host I want this to refresh every time
    Start-Sleep -Seconds 4
    cls
    }
}
Write-Host I want this to be at the screen always
Test

Czy istnieje sposób dla mnie, aby to zrobić inny niż wprowadzenie go również wewnątrz pętli lub funkcji? W rzeczywistym kodzie chcę zachować pewne wyjście w górnej części ekranu odsyłającego (nie można umieścić wewnątrz funkcji), podczas gdy funkcja pobiera niektóre dane i odświeżyć co 4 sekundy. Tutaj ponieważ używam clsgo czyści wszystko na ekranie, który nie chcę się zdarzyć. Ja tylko potrzebuje, aby usunąć wyjście z funkcji.

Utwórz 25/07/2016 o 21:15
użytkownik
W innych językach...                            


2 odpowiedzi

głosy
1

Będzie pasek postępu będzie odpowiedni? Rzeczywista wartość procentowa nie może być istotne, ponieważ w tym przykładzie pętla jest nieskończona, ale nie zachowują się podobnie do tego, co można opisać:

Function Test{
   while ($true) {
      Write-Progress -Activity "I want this to be at the screen always" -Status "I want this to refresh every time"
      Start-Sleep -Seconds 4
   }
}
Write-Progress -Activity "I want this to be at the screen always"
Test
Odpowiedział 25/07/2016 o 22:30
źródło użytkownik

głosy
0

Jeśli Write-Progress nie nadaje się wówczas funkcja pomocą zmiennych globalnych może pracować dla Ciebie:

Function Clear-HostCustom ($DisplayText)
{
    If ($DisplayText)
    {
        $global:DisplayTextGlobal = $DisplayText
    }
    Clear-Host
    Write-Host $global:DisplayTextGlobal
}
Function Test{
    while($true){
    write-host "I want this to refresh every time"
    Start-Sleep -Seconds 4
    Clear-HostCustom
    Start-Sleep -Seconds 1
    }
}
Clear-HostCustom "I want this to be at the screen always"
Test
Odpowiedział 26/07/2016 o 01:21
źródło użytkownik

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more