Windows 系统中使用 schtasks 安排任务的完整指南

最后更新: 17/12/2025
作者: 艾萨克
  • Schtasks 是线路接口 comandos 通过任务计划程序,您可以创建、修改、运行和删除本地和远程任务。
  • /sc、/tn、/tr、/ru、/mo、/st 或 /d 等关键参数定义了运行哪些程序、拥有哪些权限以及运行频率或触发条件。
  • 管理权限和帐户(管理员、SYSTEM、使用 /uy /p 的远程用户)对于正确创建和执行任务至关重要。
  • Schtasks 取代了旧的 AT 命令,并提供了一个强大的平台,用于自动化维护、脚本和重复性流程。 Windows.

使用 schtasks 安排任务

使用 schtasks 在 Windows 中安排任务 一旦你掌握了它,就会不禁纳闷自己为什么多年来都要手动完成那些重复性的工作。比如,在不寻常的时间进行备份、每天早上运行脚本、服务中断后需要重启……所有这些都可以用一个简单的命令实现自动化。

schtasks 命令命令行界面 Windows 任务计划程序允许您在本地计算机和网络上的远程计算机上创建、修改、列出、运行和删除任务。让我们通过清晰的示例和对每个关键参数的解释,深入了解它的功能,以便您能够充分利用它,从简单的自动化操作到涉及用户、权限和远程计算机的高级场景。

什么是 schtasks?它能为你做什么?

Windows 系统中 schtasks 的示例

Schtasks.exe 是控制台工具 Windows 使用该协议与任务计划程序通信。借助该协议,您可以定义一个程序, 脚本 该命令将在特定日期和时间或特定时间表自动执行,无需接触图形界面。

使用 schtasks,您可以安排重复性任务。 (每隔 X 分钟、小时、天、周或月),系统启动时、特定用户登录时、计算机空闲时,甚至响应系统事件时都会启动的任务。此外,您还可以使用不同的用户帐户(包括 SYSTEM 帐户)以及远程计算机启动这些任务。

schtasks 的基本操作 它们被分为六个主要子命令,这些子命令是您 99% 的时间都会用到的:

  • schtasks 变更:修改现有任务的属性(要运行的程序、用户、密码、交互模式……)。
  • schtasks 创建:创建一个新的计划任务。
  • schtasks 删除:从调度程序中删除任务。
  • schtasks 结束停止正在运行任务的程序。
  • schtasks 查询显示团队的计划任务。
  • schtasks 运行:强制立即执行已创建的任务。

这些操作背后有很多参数 为了定义频率、开始和结束日期、任务执行用户、远程团队、延迟、持续时间、权限级别等,我们在下面为您详细列出。

使用 schtasks 所需的许可证

schtasks 的权限

在你开始疯狂创建任务之前明确你需要哪些权限非常重要,否则你最终会得到已创建但未执行的任务,或者静默失败的任务。

在本地团队中,负责管理所有任务 要查看、创建、修改和删除任务,您需要拥有管理员权限。普通用户在某些情况下也可以创建自己的任务,但如果您想要完全控制系统,请使用具有管理员权限的帐户进行操作。

远程团队的情况也类似。您使用的帐户必须是远程计算机上的管理员帐户。您可以从您的计算机运行该命令并使用参数。 /s 指示目的地团队和 /u y /p 提供该计算机或域的管理员凭据。

/u 参数仅能正常工作。 当本地计算机和远程计算机位于同一域或已配置信任关系的域中时,就会发生这种情况。如果没有信任关系,远程计算机将无法验证您提供的帐户,即使任务看起来已创建,也会显示配置错误或为空。

此外,任务本身必须具有足够的权限。 执行您要求的操作。默认情况下,任务以当前用户或您指定的用户身份运行。 /u如果您希望它们使用其他帐户或直接使用系统权限启动,则必须使用该参数。 /ru (以用户身份运行)并且,通常情况下, /rp 输入密码。

schtasks 的通用语法和关键参数

schtasks 的语法相当复杂。然而,它始终遵循相同的模式:一个子命令,后跟定义任务执行内容、时间、地点和权限的参数。创建任务的一般格式如下:

  Windows 资源保护无法启动修复。

schtasks /create /sc <tipo_programación> /tn <nombre_tarea> /tr <comando_o_programa>

创建任务时的基本参数 分别是:

  • /sc: 提示 编程典型值:
    • MINUTE每隔 N 分钟。
    • 每小时每隔 N 小时。
    • 日常每隔 N 天。
    • 每周每隔 N 周。
    • 月刊每隔 N 个月。
    • ONCE单次执行。
    • 启动在每个 引导 的系统。
    • 登录当用户登录时。
    • 奥尼德尔:当系统闲置 X 分钟后。
    • 事件:响应日志中的特定事件。
  • /tn:唯一的任务名称。可以包含文件夹路径(例如, "MiCarpeta\BackupDB"最多 238 个字符。
  • /tr要执行的可执行文件、脚本或 .bat 文件的完整路径。如果未指定路径,则默认使用默认路径。 %SystemRoot%\System32最大长度为 262 个字符。
  • /s远程计算机(名称或 IP 地址)。如果不使用远程计算机,则表示您正在对本地计算机进行操作。
  • /或者: 执行 schtasks 命令本身时使用的凭据(用于远程编程)。
  • /p:指定用户的密码 /u如果你不提供,主机将会要求你提供。
  • /ru { | 系统}执行任务所用的帐户。您可以使用域用户、本地用户或帐户。 系统.
  • /rp:指定帐户的密码 /ru它不与……一起使用 /ru System因为 SYSTEM 账户没有密码。
  • /月:节目类型中的频率修饰符(分钟、小时、天、周或月)。
  • /d:每周或每月某些模式下的特定日期(例如, /d MON,FRI).
  • /m:具体月份(1月至12月或*表示全部月份)。
  • /英石:开始时间(24 小时制)HH:MM).
  • /et o /du:以分钟/小时为单位的日程结束时间或最长持续时间。
  • /sd y /ed:根据系统区域设置确定开始和结束日期。
  • /它:仅当执行用户以交互方式登录时才运行任务。
  • /np:不保存密码;该任务以非交互方式运行,并且仅使用本地资源。
  • /z:在计划结束时自动删除任务。
  • /rl权限级别(有限或最高)。
  • /f强制创建或修改,无需确认即可覆盖。

还有更高级的参数 (XML、向后兼容性、延迟) /延迟(HRESULT 代码等),但通过以上方法,您可以涵盖几乎所有标准场景。

按不同频率安排任务

schtasks 的优势之一 关键在于可以灵活地设定执行频率。你可以调整执行频率,从每隔几分钟执行一次,到每月最后一天发布,或者每个季度的第二个星期日发布。

精确到分钟的日程安排,它被使用 /sc 分钟。修饰符 /月 这表示任务启动的频率(以分钟为单位)。如果未指定,则默认值为 1 分钟。

例如,间隔时间为 20 分钟: schtasks /create /sc minute /mo 20 /tn "Security Script" /tr \\central\data\scripts\sec.vbs

时间段示例: schtasks /create /tn "Security Script" /tr sec.vbs /sc minute /mo 100 /st 17:00 /et 08:00 /k

安排 用来 /sc 小时再次 /月 指示运行频率。例如,从 3 月 1 日起每 5 小时运行一次 MyApp:

5 小时课程表示例: schtasks /create /sc hourly /mo 5 /sd 03/01/2002 /tn MyApp /tr c:\apps\myapp.exe

在日常安排中 (/sc 每日) 您可以使用 /月 为了拉开执行间隔。例如,从特定日期开始,每隔 12 天运行一次 MyApp:

每日间隔示例: schtasks /create /tn MyApp /tr c:\apps\myapp.exe /sc daily /mo 12 /sd 12/31/2002 /st 13:00

每周日程安排 由……定义 /sc 每周,合并 /月 (间隔数周) /d (星期几:星期一、星期二、星期三、星期四、星期五、星期六、星期日或*)。例如,要每隔一个星期五启动 MyApp:

每周示例(每两周一次): schtasks /create /tn MyApp /tr c:\apps\myapp.exe /sc weekly /mo 2 /d FRI

月度日程安排有多种选择。:

  • 到每月特定日期为止 (1-31) /sc 月度 y /d.
  • 每周和每天 (第一、第二、第三、第四 + /天)以及可选 /m 随着月份的推移。
  • 本月最后一天/mo 最后一天 y /m 指定月份或*所有月份。

月度示例(特定月份的最后一天): schtasks /create /tn MyApp /tr c:\apps\myapp.exe /sc monthly /mo LASTDAY /m FEB,MAR /st 18:00

特殊触发条件:一次性触发、启动触发、登录触发和空闲触发

你并非总是需要重复执行某项任务。有时你只需要在特定的日期和时间运行一次某些操作。以下类型就是为此而设计的。 /sc 一次这需要一个 /英石 通常情况下, /sd:

  如何在 Windows 中使用 Alt 键输入特殊字符

单次执行示例: schtasks /create /tn MyApp /tr c:\apps\myapp.exe /sc once /sd 01/01/2003 /st 00:00

ONSTART 类型 (/sc onstart这样一来,该任务就会在每次系统启动时运行,非常适合用于维护脚本、监控或自定义服务:

示例 OnStart: schtasks /create /tn MyApp /tr c:\apps\myapp.exe /sc onstart

登录 (/sc onlogon此操作会在用户登录时执行任务。您可以使用它来启动环境脚本、挂载网络驱动器、启动内部应用程序等等。例如,在远程计算机上:

远程登录示例: schtasks /create /tn "Start Web Site" /tr c:\myiis\webstart.bat /sc onlogon /s Server23

奥尼德尔 (/sc onidle当计算机处于不活动状态一段时间后(该时间由您定义),会触发该任务。 /i 只需几分钟。例如,要在设备闲置 10 分钟后启动 MyApp:

例如,空闲 10 分钟: schtasks /create /tn MyApp /tr c:\apps\myapp.exe /sc onidle /i 10

创建具有特定权限的任务:备用用户和 SYSTEM 权限。

schtasks 的一个非常强大的用途是使用不同的帐户启动任务。 例如,即使您当前使用的用户帐户登录,也可以使用管理员帐户安排维护,或者使用 SYSTEM 帐户运行进程以获得更高的权限。

使用不同的用户帐户运行任务 该参数被使用 /ru 以及密码 /rp例如,每周二在本地计算机上以 Admin06 用户身份启动 MyApp:

例如 /ru 的替代方案: schtasks /create /tn MyApp /tr myapp.exe /sc weekly /d TUE /ru Admin06

在远程系统中,/uy 和 /p 控制谁来调度任务。/ru 明确指定要使用哪个账户执行此操作。这是两个不同的概念,不应混淆。

  • /u:运行 schtasks 命令并在远程上创建任务的凭据。
  • /ru:届时将用于执行任务的账户。

使用不同帐户的远程示例: schtasks /create /tn MyApp /tr myapp.exe /sc daily /mo 4 /s Marketing /u Marketing\Admin01 /ru Reskits\User01

如果您想使用系统帐户对于享有极高特权的人,只需具体说明即可。 /ru System 无需密码。例如,要以 SYSTEM 身份在每月 15 日运行 MyApp:

例如,作为系统: schtasks /create /tn MyApp /tr c:\apps\myapp.exe /sc monthly /d 15 /ru System

请注意,以 SYSTEM 身份运行的进程。 它们不具备交互性:用户看不到窗口,也无法与之交互。它们非常适合用于服务、维护脚本或系统任务,但不适合打开用户可见的应用程序。

管理现有任务:更改、运行、列出和停止

任务创建完成后,schtasks 它提供了几个子命令来管理它们,而无需打开任务计划程序图形控制台。

更改属性 使用现有任务 schtasks /change您可以修改它运行的程序、运行该程序的用户、密码,或者将其设置为仅在交互式会话中运行:

  • / tr:新的可执行文件或脚本。
  • /ru:新的执行帐户(用户或 SYSTEM)。
  • /rp: /ru 帐户的密码。
  • /它:将任务标记为“仅在用户登录时执行”。

脚本修改示例: schtasks /change /tn "OpenWebinarsSchedule" /tr C:\Users\OpenWebinars\Documents\Release\nuevo_script.bat

如果您现在想启动一项任务忽略其编程,你使用 schtasks /运行此次执行不会改变下次预定日期:

立即运行: schtasks /run /tn "OpenWebinarsSchedule"

列出团队的任务 用来 schtasks /查询您可以选择简单的列表、表格或详细列表格式:

  • schtasks /query → 基本列表。
  • schtasks /query /fo LIST /v → 详细列表,对故障排除非常有用。

如果某个任务正在运行您想要停止的程序。, 你有 schtasks /结束您只需要任务名称:

强制停止任务: schtasks /end /tn "OpenWebinarsSchedule"

当你不再需要这项任务时你可以用以下方法消除它: schtasks /删除您可以删除特定任务或全部任务(请谨慎操作):

  • schtasks /delete /tn OpenWebinarsSchedule /f → 删除该任务,无需请求确认。
  • schtasks /delete /tn * /f → 删除所有计划的系统任务。

通过按计划完成任务(技术和安全愿景)

对 schtasks 的高级而巧妙的使用 它涉及创建任务作为持久化机制:配置程序或脚本定期运行或在系统启动时运行,即使无人登录。这对合法管理员很有用,但攻击者也会利用它,因此从……的角度充分理解它非常重要。 网络安全.

  如何在 Windows、Linux 和 macOS 上将 DMG 文件转换为 ISO

Windows 中的计划任务其实就是一个命令。 这允许系统在特定时间或以特定频率启动命令、脚本或可执行文件。如果使用 SYSTEM 帐户定义此任务并设置非常短的频率,则可以使二进制文件即使在被关闭后也持续运行。

持久性示例(系统每 N 分钟执行一次): schtasks /create /ru "SYSTEM" /sc minute /mo <minutos> /tn "<nombre>" /tr "<comando>"

对上一订单进行分解:

  1. /ru «系统»:使用 SYSTEM 帐户执行任务,即具有非常高的权限。
  2. /sc 分钟:编程类型(分钟)。
  3. /月重复间隔,例如每十分钟重复 10 次。
  4. /tn « »:任务的识别名称,如果有人想不引起注意,可以将其伪装成无害的名称。
  5. /tr « »要执行的程序或脚本(带参数的完整路径)。

有些情况下,schtasks 会被合并。 使用类似的工具 plink.exe 建立反向连接、端口隧道等,并配置为定期重新启动。从防御角度来看,应定期审查计划任务。 schtasks /query /fo LIST /v 必须使用事件查看器来检测此类使用情况。

从 AT 到 schtasks:为什么你不应该再使用 AT 了

多年来,Windows 系统一直包含 AT 命令。 用于安排任务。在现代版本中,此命令已被正式弃用,当您尝试使用它时,控制台会提示:“AT 命令已弃用。请改用 schtasks.exe。”

AT允许对简单命令进行编程 只需指定时间、日期和要执行的命令。例如,每天午夜将文档复制到另一个驱动器:

经典的AT示例: at 00:00 cmd /c copy C:\Documents\*.* J:\MyDocs

您还可以列出和删除 AT 任务 它支持同一命令的各种变体(例如按 ID、远程机器等)。然而,它在灵活性、权限精细度和高级选项方面远不及 schtasks。

在 Windows 10 及更高版本中,AT 仍然存在。 它仅作为兼容性包装器使用,但会返回请求不受支持的消息。如果您使用的是仍可运行的旧版 Windows 系统,建议您将自动化流程迁移到 Schtasks,它是官方支持且功能更强大的工具。

Schtasks 与任务调度器图形界面

schtasks 能做的所有事情也都可以做 来自 任务计划程序图形控制台 (打开) taskschd.msc 虽然可以通过运行命令来运行,但使用命令行有明显的优势:您可以自动部署、生成可重用的脚本、批量应用更改,或者无需坐在远程团队面前即可与他们合作。

在混合环境中,这是一种非常实用的方法。 它融合了两种方式:首先,通过图形界面创建一个基础任务来了解所有设置;然后,将其导出为 XML 文件;最后,使用带有参数的 schtasks 工具。 /xml 通过仅调整必要内容(用户、日期等)来部署副本。

您还可以将 schtasks 集成到 .bat 或 .ps1 脚本中。 以及其他维护任务:清洁 日志重启服务、启动备份或通知,所有这些都由调用主脚本的单个计划任务触发。

如果您管理多台机器或用户,主任务和 用于自动化任务的程序 它能让你免去早起手动备份的麻烦,防止你遗忘重要事项,并减少因反复手动操作而导致的人为错误风险。它实际上是在教会系统为你完成那些每天耗费你时间的事情。

深入理解 schtasks、其编程参数以及 /u、/ru、本地和远程权限之间的相互作用 它允许您在 Windows 中准确、安全、可重复地自动执行几乎任何例程,让计算机发挥其最佳功能:一天 24 小时严格按照指令执行。

使用 Schtaks 安排和管理计划任务
相关文章:
如何在 Windows 中使用 schtasks 安排和管理自动任务