Nasıl ekrandan sadece belirli içerikleri temizlemek için?

oy
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

Beni bu döngü veya işlevi içinde de koyarak dışındaki halletmek için bir yol var mı? Gerçek kodda ben işlev bazı verileri çeker iken, referans için ekranın (bu fonksiyonun içine koymak olamaz) üst kısmında bazı çıktı tutmak ve her 4 saniyede bir yenilemek istiyorum. Burada kullandığım beri clsben olmasını istemiyorum ekranda her şeyi temizler. Sadece işlevinden çıkışını temizlemek gerekir.

Oluştur 25/07/2016 saat 21:15
kullanıcı
Diğer dillerde...                            


2 cevaplar

oy
1

Bir ilerleme çubuğu uygun olur mu? örnekteki döngü sonsuz olduğu için fiili yüzde alakalı olmayabilir ama açıkladığınız ne benzer davranırlar kapsamaz:

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
Cevap 25/07/2016 saat 22:30
kaynak kullanıcı

oy
0

Yaz-İlerleme uygun değilse o zaman küresel değişkenleri kullanarak bir işlev sizin için işe yarayabilecek:

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
Cevap 26/07/2016 saat 01:21
kaynak kullanıcı

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