Выйти из цикла Do-Until с любой клавишей

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

$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'))

person Christian Cornelsen    schedule 11.06.2019    source источник


Ответы (1)


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

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

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

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

person Manuel Batsching    schedule 11.06.2019
comment
так просто... :) Большое спасибо! - person Christian Cornelsen; 11.06.2019