Come cancellare solo certi contenuti dallo schermo?

voti
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

C'è un modo per me per ottenere questo fatto altro che mettere anche all'interno del ciclo o di una funzione? Nel codice effettivo voglio mantenere qualche uscita nella parte superiore della schermata di riferimento (che non può essere messo all'interno della funzione), mentre la funzione estrae alcuni dati e aggiornare ogni 4 secondi. Qui dato che io uso clsazzera tutto sullo schermo, che io non voglio che accada. Mi ha solo bisogno di cancellare l'uscita dalla funzione.

È pubblicato 25/07/2016 alle 21:15
dall'utente
In altre lingue...                            


2 risposte

voti
1

Sarebbe una barra di avanzamento essere adatto? La percentuale effettiva non può essere rilevante in quanto il ciclo nell'esempio è infinito, ma si comporta simile a ciò che si descrive:

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
Risposto il 25/07/2016 a 22:30
fonte dall'utente

voti
0

Se Write-Progress non è adatto quindi una funzione tramite variabili globali potrebbe funzionare per voi:

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
Risposto il 26/07/2016 a 01:21
fonte dall'utente

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