如何阻止计划任务在计算机唤醒时立即运行?

如何阻止计划任务在计算机唤醒时立即运行?

示例:我有一个任务,计划每天早上 6 点执行(仅当我登录时)。如果我的计算机整晚处于睡眠/休眠状态直到早上 9 点,那么当我醒来时,任务将运行,即使它错过了早上 6 点的计划。我不希望发生这种情况,因为任务的运行非常重要仅有的早上6点。

我以为取消选中“错过预定启动时间后尽快运行任务”设置可以防止这种情况发生,但事实并非如此。我是否应该尝试另一种设置,以便只有计算机在预定时间开启时任务才会运行(如果错过了预定时间,则等到下一个预定时间)?

我的设置示例:

在此处输入图片描述

答案1

我找到了一个解决方法:让你的任务启动你的.bat脚本,如果它发现计算机没有处于睡眠状态,它将启动命令。我使用的脚本是:

@echo off
for /f "delims=" %%t in ('time /t') do if "%%t"=="%1" %~2

该脚本接受两个参数:第一个是调用命令的时间,第二个是命令本身(用引号引起来,如 )script.bat 21:40 "echo x"

解释

与 Bash 不同,在 Batch 中无法直接将命令输出存储在变量中,但可以逐行迭代其输出。这就是我的第二行的作用。因为time /t的输出
是单行,所以只有一次迭代,其中如果在您希望调用脚本时调用了脚本,则脚本将启动命令(作为第二个参数传递);当延迟执行脚本时,此条件将不满足。

我使用%~2而不是%2,因为%~2会丢弃命令周围的引号,
这样传递"echo x"echo使用参数执行x,打印x
而不是在echo x没有参数的情况下调用程序。

缺点

  1. 按需启动任务不会执行任何操作,您最好取消选中该字段允许按需运行任务在里面设置标签,不要混淆,

  2. 修改任务的执行时间需要修改参数以保持任务正常运行,

  3. time /t的输出取决于区域设置。

答案2

要在计算机空闲时运行计划任务,请提出“等待空闲:“ 或许还有勾选”如果计算机不再空闲则停止“。

  1. 右键单击要在计算机空闲时运行的任务,然后单击“属性”。
  2. 在“条件”选项卡上的“空闲时间”下,选中“仅当计算机空闲至少一定时间时才启动任务”复选框。
  3. 输入任务运行前计算机必须空闲的时间长度(以分钟为单位)。

注:您还可以通过选中“如果计算机不再空闲则停止任务”复选框来指定在计算机正在使用时停止任何任务。

要了解空闲时间,请按照以下步骤操作关联...

答案3

由于您让计算机处于睡眠/休眠状态,因此从技术上讲,您仍然处于“登录”状态(只是离开)。因此,作为替代方案,您可以在条件中将任务设置为“唤醒计算机以运行此任务”,它将始终在早上 6 点运行。(除非您的意思是任务运行时您需要在控制台旁)

相关内容