Πώς να καθαρίσετε ορισμένα μόνο τα περιεχόμενα από την οθόνη;

ψήφοι
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

Είναι ένας τρόπος για μένα για να γίνει αυτό, εκτός από τη θέση της και μέσα στο loop ή λειτουργία εκεί; Στον πραγματικό κώδικα που θέλετε να κρατήσετε κάποια έξοδο στο πάνω μέρος της οθόνης για παραπομπή (δεν μπορεί να βάλει μέσα στη συνάρτηση), ενώ η λειτουργία τραβάει κάποια δεδομένα και να ανανεώσετε κάθε 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-Η πρόοδος δεν είναι κατάλληλος τότε μια λειτουργία με καθολικές μεταβλητές θα μπορούσε να λειτουργήσει για σας:

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