如何在文本Powershell上打印
How to print over text powershell
我正在尝试编写一个实现打字速度测试的 powershell 脚本。我想让它看起来像这张照片。因此,您将一些文本打印到控制台,然后以不同的字体颜色在其上打印。我已经完成了脚本的所有部分,除了打印我已经打印的文本。
对于单行来说,很简单,像write-host "mytext 'r -NoNewLine
这样的操作,然后将光标设置回行首,但是如果我想输出一个,这个方法就不行了多行字符串,然后在上面打印回来。
关于如何在 powershell 中完成这样的事情有什么想法吗?
您可以使用$host.UI.RawUI.CursorPosition
查询和设置光标位置,如下例所示(通过automatic $Host
variable; for the specific property see here)。
请注意,0
的 X
值指的是行中第一个 可用 列(您可以在此处键入),即 在提示字符串之后。
一个简单的演示:
# Write a line at the top of the screen (first line)
Clear-Host
Write-Host ('x' * 20) -ForegroundColor Gray
# Place the cursor back at the start of the first line
$host.UI.RawUI.CursorPosition = @{ x = 0; y = 0 }
# Partially overwrite the original line.
Write-Host ('y' * 10) -ForegroundColor Yellow
我正在尝试编写一个实现打字速度测试的 powershell 脚本。我想让它看起来像这张照片。因此,您将一些文本打印到控制台,然后以不同的字体颜色在其上打印。我已经完成了脚本的所有部分,除了打印我已经打印的文本。
对于单行来说,很简单,像write-host "mytext 'r -NoNewLine
这样的操作,然后将光标设置回行首,但是如果我想输出一个,这个方法就不行了多行字符串,然后在上面打印回来。
关于如何在 powershell 中完成这样的事情有什么想法吗?
您可以使用$host.UI.RawUI.CursorPosition
查询和设置光标位置,如下例所示(通过automatic $Host
variable; for the specific property see here)。
请注意,0
的 X
值指的是行中第一个 可用 列(您可以在此处键入),即 在提示字符串之后。
一个简单的演示:
# Write a line at the top of the screen (first line)
Clear-Host
Write-Host ('x' * 20) -ForegroundColor Gray
# Place the cursor back at the start of the first line
$host.UI.RawUI.CursorPosition = @{ x = 0; y = 0 }
# Partially overwrite the original line.
Write-Host ('y' * 10) -ForegroundColor Yellow