$startTime = $(get-date)
write-host "`rElapsed:00:00:00"
$NoEvent = $true
While ($NoEvent)
{
Start-Sleep 1
$elapsedTime = new-timespan $startTime $(get-date)
write-host "`rElapsed:$($elapsedTime.ToString('hh\:mm\:ss'))"
#Handle event
if(event){$NoEvent = $false}
}
我已尝试在ISE以及常规控制台中运行此功能。永远不会输出回报。
答案 0 :(得分:1)
我最终使用-NoNewLine开关工作
write-host -NoNewLine "`rElapsed:$($elapsedTime.ToString('hh\:mm\:ss'))"
答案 1 :(得分:0)
`r
只发出CR,而不是CR + LF(这可能就是你想要的)。请改用`n
('换行符')。
答案 2 :(得分:0)
除非您使用clear-host
或cls
清除整个窗口,否则我认为没有任何PS cmdlet可以帮助覆盖同一行中的文本,但PowerShell有内置功能在write-progress
cmdlet中,如果这是您想要考虑的其他内容。
您可以尝试:
$startTime = $(get-date)
$NoEvent = $true
While ($NoEvent)
{
for ($a=1; $a -lt 100; $a++) {
Start-Sleep 1
$elapsedTime = new-timespan $startTime $(get-date)
Write-Progress -Activity "`rElapsed:$($elapsedTime.ToString('hh\:mm\:ss'))" -PercentComplete $a -CurrentOperation "$a% Processed" -Status "Please wait."
#Handle event
if(event){$NoEvent = $false}
}
}
有关write-progress
这是一个相关的问题:PowerShell - Overwriting line written with Write-Host