Wie nur bestimmte Inhalte aus dem Bildschirm löschen?

stimmen
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

Gibt es eine Möglichkeit für mich , diese andere zu erledigen , als es auch in der Schleife oder Funktion setzen? Im eigentlichen Code möchte ich am oberen Rand des Bildschirms eine Ausgabe halten Referenz (nicht in der Funktion gesetzt werden kann), während die Funktion einige Daten zieht und wird alle 4 Sekunden. Hier , da ich clses löscht alles auf dem Bildschirm , die ich will nicht passieren. Ich muss nur die Ausgabe von der Funktion löschen.

Veröffentlicht am 25/07/2016 um 21:15
vom benutzer
In anderen Sprachen...                            


2 antworten

stimmen
1

Würde ein Fortschrittsbalken geeignet sein? Der tatsächliche Prozentsatz kann nicht relevant sein, weil die Schleife im Beispiel unendlich ist, aber es verhält sich ähnlich zu dem, was Sie beschreiben:

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
Beantwortet am 25/07/2016 um 22:30
quelle vom benutzer

stimmen
0

Wenn Write-Progress nicht geeignet ist dann eine Funktion globalen Variablen verwenden könnte für Sie arbeiten:

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
Beantwortet am 26/07/2016 um 01:21
quelle vom benutzer

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