对于批处理,您可以使用/create
的子命令schtasks安排任务的命令。这schtasks
是一个允许您管理和创建计划任务的命令。这/create
子命令将创建计划任务。
在为您的请求提供解决方案之前,我建议您阅读 Windows 帮助消息schtasks /create /?
或通过link我添加了schtasks
命令。两者都提供了有关创建计划任务时可用的不同选项的说明,并提供了一些示例。创建计划任务很容易,但是当其中一个导致问题时(例如,它没有按照您真正想要的方式配置),查找并解决问题可能会非常令人头痛。
对于您的情况,最简单的方法是:
SCHTASKS /create /tn "Curfew" /tr "C:\Windows\System32\shutdown.exe /s /f" /sc daily /st 22:00
这将创建一个每天晚上 10 点关闭系统的任务。
EDIT:命令解释:
- the
/tn
选项为计划任务指定名称
- the
/tr
option 用于指定任务必须执行的命令
- the
/sc
选项指定任务的频率
- the
/st
选项指定任务必须安排在一天中的哪个时间
同样,有关这些选项和命令本身的更多说明,请阅读帮助消息(schtasks /create /?
)或遵循link
可以找到一些其他有用的时间表类型示例here
编辑 2:如果系统在晚上 10 点到上午 6 点之间启动,则关闭系统的任务 (see 评论OP)
您需要一个批处理脚本,用于在晚上 10 点到早上 6 点之间关闭系统:
@echo off
REM Get current timestamp from system
FOR /F "tokens=2 delims==." %%G in ('wmic os get LocalDateTime /VALUE') DO set timestamp=%%G
REM Extract hours from timestamp
set hour=%timestamp:~8,2%
REM Verify if hour >= 22 or hour < 6
set shutdown=
IF %hour% GEQ 22 set shutdown=true
IF %hour% LSS 6 set shutdown=true
REM Shutdown system if so
IF "%shutdown%" == "true" shutdown /s /f
It uses wmic os LocalDateTime
获取当前时间戳而不是%time%
因为它的优点是采用 ISO 格式,并且不像 %time% 那样依赖于区域设置(请参阅这个答案)。将其保存为批处理脚本,例如。作为C:\Windows\Curfew_police.bat
或者如果您愿意的话,可以使用“不太明显”的名称,但重要的是系统上的任何用户都可以访问该脚本。然后您可以安排一个任务,该任务将在每次系统启动时执行该脚本/sc onstart
:
schtasks /create /tn "Curfew police" /tr "\"c:\path\to script\batch.bat\"" /sc onstart
更换c:\path\to script\batch.bat
上面批处理脚本的真实路径(C:\Windows\Curfew_police.bat
例如)