Powershell马车返回不起作用

时间:2018-01-09 18:23:32

标签: powershell

$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以及常规控制台中运行此功能。永远不会输出回报。

3 个答案:

答案 0 :(得分:1)

我最终使用-NoNewLine开关工作

write-host -NoNewLine "`rElapsed:$($elapsedTime.ToString('hh\:mm\:ss'))"

答案 1 :(得分:0)

`r只发出CR,而不是CR + LF(这可能就是你想要的)。请改用`n('换行符')。

答案 2 :(得分:0)

除非您使用clear-hostcls清除整个窗口,否则我认为没有任何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

的信息,请参阅:https://docs.microsoft.com/en-us/powershell/module/Microsoft.PowerShell.Utility/Write-Progress?view=powershell-5.1

这是一个相关的问题:PowerShell - Overwriting line written with Write-Host