答案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
没有参数的情况下调用程序。
缺点
按需启动任务不会执行任何操作,您最好取消选中该字段允许按需运行任务在里面设置标签,不要混淆,
修改任务的执行时间需要修改参数以保持任务正常运行,
time /t
的输出取决于区域设置。
答案2
要在计算机空闲时运行计划任务,请提出“等待空闲:“ 或许还有勾选”如果计算机不再空闲则停止“。
- 右键单击要在计算机空闲时运行的任务,然后单击“属性”。
- 在“条件”选项卡上的“空闲时间”下,选中“仅当计算机空闲至少一定时间时才启动任务”复选框。
- 输入任务运行前计算机必须空闲的时间长度(以分钟为单位)。
注:您还可以通过选中“如果计算机不再空闲则停止任务”复选框来指定在计算机正在使用时停止任何任务。
要了解空闲时间,请按照以下步骤操作关联...
答案3
由于您让计算机处于睡眠/休眠状态,因此从技术上讲,您仍然处于“登录”状态(只是离开)。因此,作为替代方案,您可以在条件中将任务设置为“唤醒计算机以运行此任务”,它将始终在早上 6 点运行。(除非您的意思是任务运行时您需要在控制台旁)