使用PowerShell每隔x秒运行一个批处理文件

8
我想使用Windows PowerShell脚本每x秒运行一次批处理文件。 因此,同一个批处理文件会一遍又一遍地运行。
我已经做了一些搜索,但找不到我要找的东西。 这是为了在Windows XP机器上运行的某个东西。 我以前经常使用Windows计划程序进行类似的操作,但由于某种原因,Windows计划程序只运行一次……然后没有更多的运行。 我也不想让批处理文件调用自身,因为它运行了很多次后会出错。
1个回答

13
只需将批处理文件的调用放在 while 循环中,例如:
$period = [timespan]::FromSeconds(45)
$lastRunTime = [DateTime]::MinValue 
while (1)
{
    # If the next period isn't here yet, sleep so we don't consume CPU
    while ((Get-Date) - $lastRunTime -lt $period) { 
        Start-Sleep -Milliseconds 500
    }
    $lastRunTime = Get-Date
    # Call your batch file here
}

6
为什么不只使用 while(1) { sleep -sec 45; .\script.ps1 } - stej
3
这取决于目标是每隔x秒运行一次(在此假设批处理文件执行时间小于x秒),还是只需运行一次,运行20秒,休眠25秒,再运行第二次并花费30秒,然后休眠25秒。那么时间间隔会有所变化(45-55秒)。如果这不重要,则可以简单地使用休眠命令。 - Keith Hill

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