右上角的 Powershell 时钟

问题描述 投票:0回答:1

我希望使用 powershell 在终端的右上角有一个时钟,与下面提供的 bash 脚本相似(如果不完全相同)。

Bash 片段:

while true; do echo -ne "\e[s\e[0;$((COLUMNS-7))H\e[30;47m$(date +'%H:%M:%S')\e[0m\e[u"; sleep 1; done &

我想要 PowerShell 中类似的东西。我试过这个:

Clear-Host

function Show-Clock {
    $width = [console]::WindowWidth
    $height = [console]::WindowHeight
    $x = $width - 8  # Width for "HH:MM:SS"
    $y = 0

    while ($true) {
        $time = (Get-Date).ToString("HH:mm:ss")
        [console]::SetCursorPosition($x, $y)
        Write-Host "$time" -BackgroundColor White -ForegroundColor Black -NoNewline
        Start-Sleep -Seconds 1
    }
}

Show-Clock

它可以工作,但你不能在终端运行时使用我想要的。 如有任何帮助,我们将不胜感激!

编辑1:
现在我使用

Start-Process -NoNewWindow
来模仿与号 (&) 功能,但这也不起作用:

Clear-Host

function Show-Clock {
    $width = [console]::WindowWidth
    $height = [console]::WindowHeight

    $clockPositionX = $width - 8  # Width for "HH:MM:SS"
    $clockPositionY = 0

    while ($true) {
        $time = (Get-Date).ToString("HH:mm:ss")
        [console]::SetCursorPosition($clockPositionX, $clockPositionY)
        Write-Host "$time" -BackgroundColor White -ForegroundColor Black -NoNewline
        Start-Sleep -Seconds 1
    }
}

Start-Process powershell.exe -ArgumentList "-NoProfile -ExecutionPolicy Bypass -Command 'Show-Clock'" -NoNewWindow
powershell terminal clock
1个回答
0
投票

你找过Jeff Hicks吗,他已经开发了一个解决方案,你确实需要在终端之外的框架中运行。

杰夫·希克斯 PSClock

© www.soinside.com 2019 - 2024. All rights reserved.