命令是干什么的
schtasks 是 Windows 计划任务的命令行入口:创建、查询、运行、修改、删除任务,比图形界面更适合批量部署与远程维护,是脚本定时自动化的标准工具。功能上与 PowerShell 的 ScheduledTasks 模块重叠,在没有该模块或习惯批处理的场景仍以 schtasks 为主。
账户与运行时机
任务用 /ru 指定运行账户:/ru SYSTEM 可在无人登录时运行且权限最高;指定普通账户时必须用 /rp 提供密码,否则任务创建成功却永远不执行。需要桌面交互的程序放在 SYSTEM 下运行会看不到界面,这是“任务成功但没效果”的常见原因。
基本信息
| 适用平台 | Windows Server 2003 及以后、Windows 7/10/11 |
|---|---|
| 权限要求 | 创建系统级任务或指定其他账户运行需管理员 |
| 语法 | schtasks /create /sc 频率 /tn 名称 /tr 命令 [/st 时间] [/ru 账户];/run、/end、/delete、/change |
| 频率取值 | /sc once|minute|hourly|daily|weekly|monthly|onstart|onlogon |
典型使用场景
- 新服务器批量部署定时备份、清理与巡检脚本
- 临时执行一次已有任务,验证脚本本身是否正常
- 查看上次运行时间与返回码,判断是没跑还是跑失败
- 修改触发时间或运行账户,而不改动任务本身
- 卸载软件后清理残留的任务条目
常用示例
常用示例
schtasks /query /fo table # 列出全部任务
schtasks /create /tn "NightBackup" /tr "D:\scripts\backup.bat" /sc daily /st 02:00 /ru SYSTEM
schtasks /run /tn "NightBackup" # 立即执行一次
schtasks /change /tn "NightBackup" /st 03:00 # 修改触发时间
schtasks /delete /tn "NightBackup" /f # 删除任务,/f 免确认
schtasks /query /tn "NightBackup" /v /fo list # 查看上次结果与返回码参数读法
| 参数 | 作用 | 注意 |
|---|---|---|
| /sc | 触发频率 | weekly 等需与 /d 配对 |
| /st | 开始时间 | 24 小时制 HH:mm 格式 |
| /tn | 任务名 | 与 /tr 的命令路径互不影响 |
| /tr | 要执行的命令 | 路径含空格建议先封装成 bat |
| /ru | 运行账户 | SYSTEM 可在无人登录时运行 |
| /rp | 账户密码 | 指定普通账户时必填 |
任务返回码 0 表示成功、0x1 一般错误、0x2 找不到文件;/ru SYSTEM 让任务在无人登录时也能运行,是服务器任务的首选账户。
/tr 的命令路径含空格时引号嵌套容易写错,稳妥做法是把完整命令先写进一个无空格的 bat,再用 /tr 调用这个 bat。
任务历史默认可能未启用:在任务属性里开启“启用所有任务历史记录”后,才能用事件日志还原每次启动与结束的细节。