如何在PowerShell控制台中更改光标位置

3

我目前在PowerShell中将当前光标位置分配给一个变量,以便在执行脚本中的倒计时等操作时覆盖相同的空间,如下所示:

$errorPos = $host.UI.RawUI.CursorPosition
for ($i=5; $i -ge 0; $i--) {
    $host.UI.RawUI.CursorPosition = $errorPos
    Write-Host -NoNewline -BackgroundColor Yellow -ForegroundColor Black "$i"
    Start-Sleep -Seconds 1
}

我想要做的是将光标的当前位置向前移动两个空格,然后将其分配给另一个变量。我可以使用以下代码:

write-host "  "

但我不想覆盖当前占据该空间的文本。

我认为可以通过X和Y坐标来完成,但是没有太大的成功。


对我来说,这听起来像是一个带有倒计时数字的进度条,用于状态文本。 - EBGreen
1个回答

3
如果你只想将“X”向前移动2个位置,你可以在创建errorPos变量后执行以下操作:
$errorPos.X += 2

你可以直接使用$errorPos.X.Y来修改变量。

太好了,问题解决了,谢谢ConnorLSW。我想当我在玩耍时可能有类似的情况,但是ISE不喜欢操作光标的位置,所以看起来行不通! - Rob Berry
1
一定要在普通提示符中测试此功能,ISE 很可能无法正常运行 :) - 你可能还想看看 Write-Progress,这是实现你想要的功能的“更好”方法。 - colsw

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接