at

适用范围:Windows Server 2022、Windows Server 2019、Windows Server 2016、Windows Server 2012 R2、Windows Server 2012

将命令和程序计划在指定的时间和日期在计算机上运行。 仅当计划服务正在运行时,才能使用 at。 如果使用 at 时不带参数,则会列出已计划的命令。 若要运行此命令,您必须是本地 Administrators 组的成员。

语法

at [\computername] [[id] [/delete] | /delete [/yes]]
at [\computername] <time> [/interactive] [/every:date[,...] | /next:date[,...]] <command>

参数

参数 说明
\<computername\> 指定远程计算机。 如果省略此参数,则 at 将计划本地计算机上的命令和程序。
<id> 指定分配给已计划命令的标识号。
/delete 取消已计划的命令。 如果省略 ID,将取消计算机上的所有已计划的命令。
/yes 删除计划事件时,对来自系统的所有查询回答“是”。
<time> 指定要运行命令的时间。 时间 24 小时表示法表示(即从 00:00(午夜)到 23:59),格式为“小时:分钟”。
交互 允许命令与在命令运行时登录的用户的桌面进行交互。
间隔: 在每周或每月的每个指定日(例如,每个星期四或每月的第三天)运行命令。
<date> 指定要运行命令的日期。 你可以指定一周中的一天或多天(即,键入 M、T、W、Th、F、S、Su),也可以指定一个月中的一天或多天(即,键入 1 到 31)。 用逗号分隔多个日期条目。 如果省略 date,则 at 使用该月的当前日期。
next: 在下一个当天日期(例如,下个星期四)运行命令。
<command> 指定要运行的 Windows 命令、程序(即.exe 或.com 文件)或批处理程序(即.bat 或.cmd 文件)。 当命令需要路径作为参数时,请使用绝对路径(即以驱动器号开头的整个路径)。 如果该命令位于远程计算机上,请为服务器和共享名称指定通用命名约定 (UNC) 表示法,而不是远程驱动器号。
/? 在命令提示符下显示帮助。

备注

  • 在运行命令之前,此命令不会自动加载 cmd.exe. 如果运行的不是可执行 (.exe) 文件,则必须在命令的开头显式加载 cmd.exe,如下所示:

    cmd /c dir > c:\test.out
    
  • 如果在没有命令行选项的情况下使用此命令,则计划任务将显示在格式类似于以下内容的表中:

    Status  ID   Day        time        Command Line
    OK      1    Each F     4:30 PM     net send group leads status due
    OK      2    Each M     12:00 AM    chkstor > check.file
    OK      3    Each F     11:59 PM    backup2.bat
    
  • 如果在此命令中包含标识号 (ID),则只有单个条目的信息以类似于以下的格式显示:

    Task ID: 1
    Status: OK
    Schedule: Each  F
    Time of Day: 4:30 PM
    Command: net send group leads status due
    
  • 计划某个命令(尤其是具有命令行选项的命令)后,可键入不带任何命令行选项的 at 来检查命令语法是否正确。 如果“命令行”列中的信息不正确,请删除该命令并重新键入。 如果仍然不正确,请重新键入命令并减少命令行选项的数量。

  • 使用 at 计划的命令将作为后台进程运行。 输出不会显示在计算机屏幕上。 要将输出重定向到文件,请使用重定向符号 >。 如果将输出重定向到文件,则无论在命令行还是在批处理文件中使用 at,都需要在重定向符号之前使用转义符号 ^ 例如,要将输出重定向到 output.txt,请键入:

    at 14:45 c:\test.bat ^>c:\output.txt
    

    执行命令的当前目录是 systemroot 文件夹。

  • 如果在调度命令运行后更改了系统时间,请通过键入不带命令行选项的 at,从而将 at 计划程序与修改后的系统时间同步。

  • 计划的命令存储在注册表中。 因此,即使重新启动计划服务,计划的任务也不会丢失。

  • 请勿将重定向驱动器用于访问网络的计划作业。 计划服务可能无法访问重定向的驱动器,如果在计划任务运行时有其他用户登录,则重定向的驱动器可能不存在。 相反,请对计划的作业使用 UNC 路径。 例如:

    at 1:00pm my_backup \\server\share
    

    不要使用以下语法,其中 x: 是用户建立的连接:

    at 1:00pm my_backup x:
    

    如果计划一个使用驱动器号连接到共享目录的 at 命令,请在使用完驱动器后包括 at 命令以断开驱动器的连接。 如果驱动器未断开连接,则在命令提示符下将无法使用分配的驱动器号。

  • 默认情况下,使用此命令计划的任务将在 72 小时后停止。 可以修改注册表以更改此默认值。

    修改注册表

    注意

    不正确地编辑注册表可能会对系统造成严重损坏。 在更改注册表之前,应备份计算机上任何有价值的数据。

    1. 启动注册表编辑器 (regedit.exe)。

    2. 在注册表中找到并单击以下项:HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Schedule

    3. 在“编辑”菜单上,单击“添加值”,然后添加以下注册表值:

      • 值名称。 atTaskMaxHours

      • 数据类型。 reg_DWOrd

      • 基数。 小数

      • 值数据:0。 “数值数据”字段中的值为 0 表示没有限制,并且不会停止。 从 1 到 99 的值表示小时数。

  • 可以使用“任务计划”文件夹查看或修改使用此命令创建的任务的设置。 使用此命令计划任务时,该任务将列在“任务计划”文件夹中,其名称如下:at3478。 但是,如果通过“任务计划”文件夹修改任务,则该任务将升级为正常的计划任务。 该任务对 at 命令不再可见,并且 at 帐户设置不再适用于该任务。 你必须明确输入任务的用户帐户和密码。

示例

要显示在 Marketing 服务器上计划的命令列表,请键入:

at \\marketing

要了解 Corp 服务器上标识号为 3 的命令的详细信息,请键入:

at \\corp 3

要计划在上午 8:00 在 Corp 服务器上运行 net share 命令,并将列表重定向到 Maintenance 服务器,请在 Reports shared 目录中的 Corp.txt 文件中键入:

at \\corp 08:00 cmd /c net share reports=d:\marketing\reports >> \\maintenance\reports\corp.txt

要在每五天的午夜将营销服务器的硬盘驱动器备份到磁带驱动器,请创建名为 archive.cmd 的批处理程序(其中包含备份命令),然后计划运行该批处理程序,请键入:

at \\marketing 00:00 /every:5,10,15,20,25,30 archive

要取消当前服务器上计划的所有命令,请按如下所示清除 at 计划信息:

at /delete

要运行不是可执行 (.exe) 的命令,请在命令前加上 cmd /c 以加载 cmd.exe,如下所示:

cmd /c dir > c:\test.out