2013-04-05 172 views
0

我想提出在PowerShell中簡單的計數器。它必須提示用戶他們是否想要更高或更低的號碼。起始數字必須爲0,並且不能低於零或高於10.如果用戶想要更高的數字,則必須將數字遞增1,如果更低,則遞減1.然後,它必須能夠停止在所需的數量。有了這個數字,我可以設置一個註冊表值。簡單的遞增/遞減計數器

我不知道一個有效的方式來提示用戶。我可以使用Read-Host cmdlet詢問他們是否鍵入「較高」或「較低」,但是有沒有更高效的方法來完成此操作?

例如,

$i = 0 

while (($i -gt 0) -or ($i -lt 10)){ 
    $j = Read-Host "The current number is $i, would you like a higher/lower number, or quit?" 

    if ($j -eq "higher") { 
     $i++ 
     Write-Host "The current number is $i" 
    } elseif ($j -eq "lower") { 
     $i-- 
     Write-Host "The current number is $i" 
    } elseif ($j -eq "quit") { 
     Write-Host "Final number is: $i" 
     break 
    } 
} 

我怎樣才能做到這一點?

+0

效率是在運營商手中。如果我在一個控制檯(PowerShell的)環境中我工作,彈出一個對話框,如下建議是*以下*有效的,因爲這意味着我必須採取一個手離開鍵盤,並將其移動到鼠標(如果在鍵盤快捷鍵對話不明顯)。爲什麼不爲「高」和「低」如「l」和「h」和/或上/下和/或u/d添加別名?其他說明:嵌套的if/else語句中有很多冗餘。使用'$ j'上的'switch'來執行遞增/遞減操作,並在循環結束時保存輸出。 – alroc 2013-04-05 12:53:47

+0

[寫入主機是邪惡的(http://windowsitpro.com/blog/what-do-not-do-powershell-part-1) – 2015-07-15 19:07:45

回答

1

你可以使用是/否提示窗口讓用戶輸入。

$a = new-object -comobject wscript.shell 
$intAnswer = $a.popup("Do you want to delete these files?", 0, "Delete Files", 4) 
If ($intAnswer -eq 6) { 
    $a.popup("You answered yes.") 
} 
else { 
    $a.popup("You answered no.") 
} 

如果您在彈出()的第四個參數代替「3」功能,您將得到是,否,並在提示窗口中取消按鈕。

參考:Provide a Yes/No Prompt in Windows PowerShell