You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在PowerShell中实现运行代码后休眠至下一小时整点并重复执行?

PowerShell 实现任务执行后休眠至下一小时整点并重复运行

以下是满足需求的PowerShell代码,无需轮询检查时间,通过精准计算休眠秒数实现低资源占用的定时重复执行:

while ($true) {
    # --------------------------
    # 替换成你需要重复执行的代码块
    Write-Host "执行任务中... $(Get-Date)"
    # 示例:模拟耗时操作,实际使用时可删除
    Start-Sleep -Seconds 10
    # --------------------------

    # 计算下一个小时整点的时间
    $currentTime = Get-Date
    $nextHour = $currentTime.Date.AddHours($currentTime.Hour + 1)

    # 计算需要休眠的秒数
    $sleepSeconds = ($nextHour - $currentTime).TotalSeconds

    # 处理任务执行超时的情况(确保休眠到下一个有效整点)
    if ($sleepSeconds -lt 0) {
        $nextHour = $currentTime.Date.AddHours($currentTime.Hour + 2)
        $sleepSeconds = ($nextHour - $currentTime).TotalSeconds
    }

    Write-Host "休眠至 $nextHour,共 $([math]::Round($sleepSeconds)) 秒"
    Start-Sleep -Seconds $sleepSeconds
}

代码说明:

  • 循环逻辑:通过while ($true)实现无限重复执行,可按需添加终止条件(比如执行次数限制、特定触发信号等)。
  • 任务执行块:替换注释区域的代码为你实际需要运行的业务逻辑。
  • 整点计算:通过$currentTime.Date.AddHours($currentTime.Hour + 1)直接定位当前时间的下一个整点(例:当前14:23,下一个整点为15:00)。
  • 休眠计算:基于时间差精确计算休眠秒数,彻底避免轮询Get-Date带来的额外资源消耗。
  • 超时处理:如果任务执行时长超过1小时,自动计算到下下一个整点,保证每次任务都在整点触发。

运行说明:

  • 将代码保存为.ps1文件,普通用户权限即可直接用PowerShell运行。
  • 如需后台静默运行,可执行命令:powershell.exe -WindowStyle Hidden -File .\你的脚本名.ps1

内容的提问来源于stack exchange,提问作者Steve Dorr

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.23 11:07:42