Выйти из цикла Do-Before с любой клавишей - PullRequest
0 голосов
/ 11 июня 2019

Я хочу создать простой цикл, пока пользователь не нажмет любую клавишу. Цель состоит в том, чтобы петли останавливались только при нажатии любой клавиши. В противном случае цикл и цикл и цикл без какого-либо взаимодействия. Я думаю, что мой код скажет вам, чего я хочу. Но я не уверен, что это решаемо с этим типом цикла?

$sec = 0
Write-Host 'Press any key to quit...'

do {
    Write-Host -ForegroundColor Green "$sec Sec"
    Start-Sleep -Seconds 1
    $sec ++    
} until ($null = $Host.UI.RawUI.ReadKey('NoEcho,IncludeKeyDown'))

1 Ответ

0 голосов
/ 11 июня 2019

Вы можете использовать [System.Console]::KeyAvailable.Он вернет значение, как только нажатие клавиши станет доступным во входном потоке.

$sec = 0 
do 
{
    Write-Host -ForegroundColor Green "$sec Sec"
    Start-Sleep -Seconds 1
    $sec++    

} until ([System.Console]::KeyAvailable)

Как только вы нажмете любую клавишу, это завершит цикл, как только будет оценено состояние цикла.

...