Cum de a șterge numai anumite conținuturi de pe ecran?

voturi
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

Există o modalitate pentru mine de a obține acest lucru făcut , altele decât inscrie , de asemenea , în interiorul buclei sau funcția? În codul actual , vreau să păstreze o anumită ieșire în partea de sus a ecranului de referință (nu poate fi pus în interiorul funcției), în timp ce funcția trage unele date și refresh la fiecare 4 secunde. Aici , deoarece am folosi - clsl șterge totul de pe ecran pe care nu vreau să se întâmple. Am nevoie doar pentru a șterge ieșirea din funcție.

Întrebat 25/07/2016 la 21:15
de către utilizator
În alte limbi...                            


2 răspunsuri

voturi
1

Ar o bară de progres fi potrivit? Procentul real nu poate fi relevant, deoarece bucla în exemplul este infinit, dar se comportă similar cu ceea ce descrie:

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
Publicat 25/07/2016 la 22:30
sursa de către utilizator

voturi
0

Dacă Scrie-Progress nu este adecvat, atunci o funcție folosind variabile globale ar putea lucra pentru tine:

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
Publicat 26/07/2016 la 01:21
sursa de către utilizator

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