Как очистить только некоторые содержимое с экрана?

голоса
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

Есть ли способ для меня , чтобы это сделать , кроме того , чтобы поместить его также внутри цикла или функции? В реальном коде я хочу сохранить некоторый вывод в верхней части экрана для справки (он не может поставить внутри функции), в то время как функция тянет некоторые данные и обновляется каждые 4 секунды. Вот так я использую clsэто очищает все на экране , который я не хочу , чтобы это произошло. Я только должен очистить выход из функции.

Задан 25/07/2016 в 21:15
пользователем
На других языках...                            


2 ответов

голоса
1

Будет ли прогресс бар будет подходящим? Фактический процент не может быть уместным, поскольку цикл в примере, бесконечен, но она ведет себя подобно тому, что вы описали:

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
Ответил 25/07/2016 в 22:30
источник пользователем

голоса
0

Если Write-Progress не подходит, то функция использования глобальных переменных может работать для вас:

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
Ответил 26/07/2016 в 01:21
источник пользователем

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