ZetCode

Windows 命令提示符任务计划

最后修改于 2025 年 7 月 14 日

Windows 中的任务计划允许自动化执行程序或脚本。schtasks 命令通过命令提示符提供此功能。计划任务可以在特定时间、系统事件或定期执行。这使得维护、备份和其他重复性任务的自动化成为可能。适当的任务计划可减少手动工作并确保及时执行。

Windows 任务计划程序服务管理所有计划任务。任务可以在具有各种安全上下文的不同用户帐户下运行。任务支持触发器、操作、条件和设置,以实现灵活的自动化。schtasks 命令提供了从命令行完全控制任务计划的功能。这对于脚本编写和远程管理至关重要。

可以创建任务来运行程序、脚本或发送电子邮件。它们支持每日、每周、每月或一次性计划。任务还可以触发于系统启动、用户登录或特定事件。高级选项包括仅在空闲时或在交流电下运行。错误处理和重试选项使任务更加健壮。

本教程通过实际示例涵盖 schtasks 命令的用法。我们将创建、修改、运行和删除计划任务。到最后,您将能够有效地自动化各种系统任务。这些技能对于系统管理员和高级用户来说非常有价值。

基本任务计划概念

在深入研究示例之前,让我们定义关键的任务计划概念。理解这些将帮助您创建有效的计划任务。

触发器指定任务何时运行。常见触发器包括特定时间、间隔或系统事件。可以在单个任务中组合多个触发器。触发器决定任务的计划和激活条件。

操作定义任务将执行什么。这通常是程序、脚本或电子邮件消息。操作指定可执行文件及其参数。一个任务可以包含按顺序运行的多个操作。

条件提供任务执行的附加标准。这些包括空闲状态、电源状态或网络可用性。条件有助于防止任务在不适当的时间运行。它们与触发器一起控制执行。

设置控制计划之外的任务行为。这些包括重试次数、执行时间限制和失败操作。设置有助于管理任务的运行方式和处理问题。它们确保任务可靠执行。

创建每日备份任务

此示例创建了一个每日运行备份脚本的任务。该任务将在每天凌晨 2:00 执行。

create_daily_backup.bat
@echo off
schtasks /create /tn "DailyBackup" /tr "C:\scripts\backup.bat" /sc daily /st 02:00 /ru SYSTEM

此命令创建一个名为“DailyBackup”的任务,该任务每天运行 backup.bat。该任务在 SYSTEM 帐户下运行,以获得最大权限。

schtasks /create

启动新计划任务的创建。所有任务创建命令都从此基础命令开始。

/tn "DailyBackup"

将任务名称指定为“DailyBackup”。任务名称应具有描述性且唯一。它们在列表中标识任务。

/tr "C:\scripts\backup.bat"

定义任务操作 - 运行 backup.bat。/tr 参数指定要执行的程序或脚本。

/sc daily /st 02:00

设置每日计划(/sc daily),从凌晨 2:00 开始(/st 02:00)。时间使用 24 小时格式。这创建了一个重复的每日触发器。

/ru SYSTEM

在 SYSTEM 帐户下运行任务。这提供了提升的权限,而无需存储用户凭据。

C:\>create_daily_backup.bat
SUCCESS: The scheduled task "DailyBackup" has successfully been created.

成功执行会返回确认消息。该任务现在出现在任务计划程序中,并将每天运行。

计划每周维护任务

此示例计划一个每周维护脚本,于每周日凌晨 3:00 运行。

weekly_maintenance.bat
@echo off
schtasks /create /tn "WeeklyMaintenance" /tr "C:\scripts\maintenance.bat" /sc weekly /d SUN /st 03:00 /ru "DOMAIN\Admin" /rp "P@ssw0rd"

这创建了一个任务,该任务每周日在星期日运行 maintenance.bat。该任务使用域管理员凭据以获得所需权限。

/sc weekly /d SUN

设置每周计划(/sc weekly),在星期日(/d SUN)运行。星期几代码为 MON,TUE,WED,THU,FRI,SAT,SUN。

/ru "DOMAIN\Admin" /rp "P@ssw0rd"

指定运行帐户和密码。对于域帐户,使用 DOMAIN\Username 格式。本地帐户使用 .\Username。

/st 03:00

将开始时间设置为凌晨 3:00。结合 /sc 和 /d 以实现完整的计划控制。

C:\>weekly_maintenance.bat
SUCCESS: The scheduled task "WeeklyMaintenance" has successfully been created.

任务已创建,并将每周运行。在任务计划程序中验证以确保配置正确。

创建在系统启动时运行的任务

此示例创建了一个在系统启动时自动运行的任务。对于监视或服务脚本很有用。

startup_task.bat
@echo off
schtasks /create /tn "StartupMonitor" /tr "C:\scripts\monitor.exe" /sc onstart /delay 0005:00

这创建了一个在系统启动时运行 monitor.exe 的任务。任务在启动后等待 5 分钟后再执行。

/sc onstart

配置任务在系统启动时运行。此触发器在 Windows 启动时激活,在用户登录之前。

/delay 0005:00

在触发器后将任务执行延迟 5 分钟。格式为 HHMM:SS。在运行任务之前允许系统稳定很有用。

C:\>startup_task.bat
SUCCESS: The scheduled task "StartupMonitor" has successfully been created.

任务将在每次系统重新启动后自动运行。无需手动干预。

计划带有多个触发器的每月任务

此示例创建了一个带有多个触发器的任务 - 每月运行一次,并在每月最后一天运行。

monthly_task.bat
@echo off
schtasks /create /tn "MonthlyReport" /tr "C:\scripts\report.bat" /sc monthly /mo 1 /d 1 /st 23:00
schtasks /change /tn "MonthlyReport" /add /sc monthly /mo LASTDAY /st 23:00

创建在每月第一天和最后一天运行的任务。两个触发器都在晚上 11:00 执行。

/sc monthly /mo 1 /d 1

设置每月计划(/sc monthly),每 1 个月(/mo 1),在第 1 天(/d 1)运行。创建第一个触发器。

schtasks /change /tn "MonthlyReport" /add /sc monthly /mo LASTDAY

将第二个触发器添加到现有任务。此触发器在每月最后一天(LASTDAY)运行。

/st 23:00

两个触发器都使用相同的开始时间(晚上 11:00)。时间为每个触发器指定一次。

C:\>monthly_task.bat
SUCCESS: The scheduled task "MonthlyReport" has successfully been created.
SUCCESS: The parameters of scheduled task "MonthlyReport" have been changed.

任务现在在任务计划程序中有两个触发器。它将按配置每月运行两次。

创建每 15 分钟运行一次的任务

此示例计划一个任务,在工作时间内每 15 分钟运行一次。

frequent_task.bat
@echo off
schtasks /create /tn "FrequentCheck" /tr "C:\scripts\check_status.bat" /sc minute /mo 15 /st 08:00 /et 17:00 /k

创建了一个任务,该任务在早上 8 点到下午 5 点之间每 15 分钟运行一次 check_status.bat。如果任务在结束时间仍运行时,则终止任务。

/sc minute /mo 15

设置计划每 15 分钟运行一次(/mo 15)。/sc minute 指定基于分钟的重复。

/st 08:00 /et 17:00

定义从早上 8:00 到下午 5:00 的活动时间段。任务仅在此时间窗口内运行。

/k

如果在结束时间仍运行时终止任务。确保任务不重叠或无限期运行。

C:\>frequent_task.bat
SUCCESS: The scheduled task "FrequentCheck" has successfully been created.

任务将在工作时间每 15 分钟运行一次。在任务计划程序中验证计划。

列出和管理计划任务

创建任务后,您可能需要列出、运行或删除它们。这些命令有助于管理现有任务。

manage_tasks.bat
@echo off
echo Listing all tasks:
schtasks /query /fo list
echo.
echo Running task immediately:
schtasks /run /tn "DailyBackup"
echo.
echo Deleting task:
schtasks /delete /tn "OldTask" /f

此脚本演示了任务管理命令:列出、运行和删除任务。/f 开关强制删除而不进行确认。

schtasks /query /fo list

以详细列表格式列出所有计划任务。/fo 参数控制输出格式(TABLE,LIST,CSV)。

schtasks /run /tn "DailyBackup"

立即运行“DailyBackup”任务,无论计划如何。用于测试或手动触发。

schtasks /delete /tn "OldTask" /f

删除“OldTask”任务而不进行确认(/f)。请谨慎操作,因为这无法撤销。

C:\>manage_tasks.bat
Listing all tasks:

Folder: \
TaskName: \DailyBackup
Status: Ready
...

Running task immediately:
SUCCESS: Attempted to run the scheduled task "DailyBackup".

Deleting task:
SUCCESS: The scheduled task "OldTask" was successfully deleted.

输出显示任务详细信息、执行确认和删除成功。实际输出因系统而异。

来源

Microsoft schtasks 文档

在本文中,我们介绍了使用 Windows 命令提示符的任务计划。这些技术能够强大地自动化系统管理任务。

作者

我的名字是 Jan Bodnar,我是一名充满热情的程序员,拥有丰富的编程经验。自 2007 年以来,我一直在撰写编程文章。迄今为止,我已撰写了 1,400 多篇文章和 8 本电子书。我在编程教学方面拥有十多年的经验。