2013-04-05 2 views
0

Я хотел бы сделать простой счетчик в Powershell. Он должен указать пользователю, хочет ли он более высокое или меньшее число. Начальный номер должен быть 0, и он не может быть ниже нуля или выше 10. Если пользователю требуется большее число, он должен увеличивать число с 1, если нижний декремент на 1. Затем он должен иметь возможность остановить по желаемому номеру. С помощью этого номера я могу установить значение реестра.Простой счетчик приращений/декретов

Я не знаю, как эффективный способ запросить пользователя. Я могу использовать командлет Read-Host, чтобы узнать, набрали ли они «более высокий» или «нижний», но есть ли более эффективный способ сделать это?

Например,

$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. Используйте 'switch' на' $ j' для выполнения приращения/уменьшения и сохранения вывода в конце цикла. – alroc

+0

[Write-Host is evil] (http://windowsitpro.com/blog/what-do-not-do-powershell-part-1) –

ответ

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

Смежные вопросы