Jak vymazat jen určité obsahy z obrazovky?

hlasů
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

Existuje způsob, jak pro mě, jak se to dělá jinak než uvedením i uvnitř smyčky nebo funkce? Ve skutečném kódu chci, aby nějaký výstup v horní části obrazovky pro reference (nelze umístit uvnitř funkce), zatímco funkce táhne nějaká data a aktualizovat každé 4 sekundy. Tady, protože jsem používat clsto vymaže všechno, co na obrazovce, které nechci, aby se stalo. I jen potřebuje vyčistit výstup z funkce.

Položena 25/07/2016 v 21:15
uživatelem
V jiných jazycích...                            


2 odpovědí

hlasů
1

By bylo vhodné bar pokrok? Skutečný procentní podíl nemusí být relevantní, protože smyčka v tomto příkladu je nekonečný, ale to se chová podobně jako to, co popisujete:

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
Odpovězeno 25/07/2016 v 22:30
zdroj uživatelem

hlasů
0

Pokud Write-Progress není vhodná pak funkce pomocí globálních proměnných by mohlo pracovat pro vás:

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
Odpovězeno 26/07/2016 v 01:21
zdroj uživatelem

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