Comment effacer seulement certains contenus de l'écran?

voix
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

Est - il possible pour moi d'obtenir ce fait autre que de le mettre aussi à l' intérieur de la boucle ou la fonction? Dans le code actuel , je veux garder une sortie en haut de l'écran de référence (il ne peut pas être mis à l' intérieur de la fonction), tandis que la fonction tire des données et rafraîchir toutes les 4 secondes. Ici , depuis que je l' utilise , clsil efface tout sur l'écran que je ne veux pas arriver. Je n'a besoin que d'effacer la sortie de la fonction.

Créé 25/07/2016 à 21:15
utilisateur
Dans d'autres langues...                            


2 réponses

voix
1

Est-ce que une barre de progression convenir? Le pourcentage réel peut-être pas pertinent, car la boucle dans l'exemple est infini, mais il ne se comporte semblable à ce que vous décrivez:

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
Créé 25/07/2016 à 22:30
source utilisateur

voix
0

Si Write-Progress ne convient pas alors une fonction en utilisant des variables globales pourrait fonctionner pour vous:

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
Créé 26/07/2016 à 01:21
source utilisateur

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