windows有一个任务计划程序,可以打开这个程序,创建定时的任务。windows提供了两个命令行可以创建计划任务,分别是at和schtasks。schtasks被推荐用来替换at,并且at在win10操作系统中已经不再支持。要使用命令行创建计划任务,必须保证计划任务已经在运行。
1. at
1.1 语法
AT [\\computername] [ [id] [/DELETE] | /DELETE [/YES]]
AT [\\computername] time [/INTERACTIVE]
[ /EVERY:date[,...] | /NEXT:date[,...]] "command"
\\computername 指定远程计算机。如果省略这个参数,会计划在本地计算机上运行命令。
id 指定给已计划命令的识别号。
/delete 删除某个已计划的命令。如果省略 id, 计算机上所有已计划的命令都会被删除。
/yes 不需要进一步确认时,跟删除所有作业的命令一起使用。
time 指定运行命令的时间。
/interactive 允许作业在运行时,与当时登录的用户桌面进行交互。
/every:date[,...] 指定在每周或每月的特定日期运行命令。 如果省略日期,则默认为在每月的本日运行。
/next:date[,...] 指定在下一个指定日期(如,下周四)运 行命令。如果省略日期,则默认为在每月的本日运行。
"command" 准备运行的 Windows NT 命令或批处理程序。
1.2. 示例
1.2.1. 列出所有计划任务
at
1.2.2. 删除所有计划任务
at /delete /yes
at /d /y
at 2 /d
rem /d /y为简写
rem at 2 /d为删除指定任务号
1.2.3. 每个周二的上午8点执行批处理
at 8:00 /every:M cmd /c d:/md.bat
at 8:00 /every:M d:/md.bat
rem 既可以通过cmd来执行批处理,也可以直接运行批处理文件
rem Specifies the date when you want to run the command.
rem You can specify one or more days of the week (that is, type M,T,W,Th,F,S,Su)
rem or one or more days of the month (that is, type 1 through 31).
rem Separate multiple date entries with commas. If you omit Date, at uses the current day of the month.
1.2.4. 每月3号0点执行关机任务
at 00:00 /every:3 shutdown /s /t 0
rem shutdown /s /t 0属于计划任务执行的命令行,/s关机,/t 0延时0秒
1.2.5. 每周一和周五0点执行关机任务
at 00:00 /every:M,F shutdown /s /t 0
rem /every:M,F表示每周二和周五
1.2.5. 下个月开始每个月3号0点自动关机
at 00:00 /next:3 shutdown /s /t 0
rem /next是相对于当前的下一次
2. schtasks
schtasks被微软推荐用来代替at创建定时计划任务。schtasks功能更加细化,更加强大。以下只描述主要功能,更多细节见微软资料
2.1. schtasks /create
此命令主要负责创建新的计划任务。
2.1.1 语法
schtasks/create/tnTaskName/trTaskRun/scschedule[/momodifier][/dday][/mmonth[,month...][/iIdleTime]
[/stStartTime][/sdStartDate][/edEndDate][/scomputer[/u[domain\]user/ppassword]]
[/ru{[Domain\]User|"System"} [/rpPassword]]/?
参数
-
/tn TaskName
指定任务的名称。 -
/tr TaskRun
指定任务运行的程序或命令。键入可执行文件、脚本文件或批处理文件的完全合格的路径和文件名。如果忽略该路径,SchTasks.exe 将假定文件在Systemroot\System32 目录下。 -
/sc schedule
指定计划类型。有效值为 MINUTE、HOURLY、DAILY、WEEKLY、MONTHLY、ONCE、ONSTART、ONLOGON、ONIDLE。值 说明 INUTE、HOURLY、DAILY、WEEKLY、MONTHLY 指定计划的时间单位。 NCE 任务在指定的日期和时间运行一次。 NSTART 任务在每次系统启动的时候运行。可以指定启动的日期,或下一次系统启动的时候运行任务。 ONLOGON 每当用户(任意用户)登录的时候,任务就运行。可以指定日期,或在下次用户登录的时候运行任务。 NIDLE 只要系统空闲了指定的时间,任务就运行。可以指定日期,或在下次系统空闲的时候运行任务。 -
/mo modifier
指定任务在其计划类型内的运行频率。这个参数对于 MONTHLY 计划是必需的。对于 MINUTE、HOURLY、DAILY 或 WEEKLY 计划,这个参数有效,但也可选。默认值为 1。划类型 修饰符 说明 MINUTE 1~1439 任务每n分钟运行一次。 OURLY 1~23 任务每n小时运行一次。 AILY 1~365 任务每n天运行一次。 WEEKLY 1~52 任务每n周运行一次。 MONTHLY 1~12 任务每n月运行一次。 null LASTDAY 任务在月份的最后一天运行。 null FIRST、SECOND、THIRD、FOURTH、LAST 与/dday参数共同使用,并在特定的周和天运行任务。例如,在月份的第三个周三 -
/d dirlist
指定周或月的一天。只与 WEEKLY 或 MONTHLY 计划共同使用时有效。划类型 日期值 WEEKLY 可选项。有效值是 MON ~ SUN 和 * (每一天)。MON 是默认值。 MONTHLY 在使用 FIRST、SECOND、THIRD、FOURTH 或 LAST 修饰符 (/mo) 时,需要 MON ~ SUN 中的某个值。1 ~ 31 是可选的,只在没有修饰符或修饰符为1 ~ 12类型时有效。默认值是 1 (月份的第一天)。 -
/m month[,month…]
指定一年中的一个月。有效值是 JAN ~ DEC 和 * (每个月)。/m参数只对于 MONTHLY 计划有效。在使用 LASTDAY 修饰符时,这个参数是必需的。否则,它是可选的,默认值是 * (每个月)。 -
/i InitialPageFileSize
指定任务启动之前计算机空闲多少分钟。键入一个1 ~ 999之间的整数。这个参数只对于 ONIDLE 计划有效,而且是必需的。 -
/st StartTime
以HH:MM:SS24 小时格式指定时间。默认值是命令完成时的当前本地时间。/st参数只对于 MINUTE、HOURLY、DAILY、WEEKLY、MONTHLY 和 ONCE 计划有效。它只对于 ONCE 计划是必需的。 -
/sd StartDate
以MM/DD/YYYY格式指定任务启动的日期。默认值是当前日期。/sd参数对于所有的计划有效,但只对于 ONCE 计划是必需的。 -
/ed EndDate
指定任务计划运行的最后日期。此参数是可选的。它对于 ONCE、ONSTART、ONLOGON 或 ONIDLE 计划无效。默认情况下,计划没有结束日期。 -
/s Computer
指定远程计算机的名称或 IP 地址(带有或者没有反斜杠)。默认值是本地计算机。 -
/u [domain]user
使用特定用户帐户的权限运行命令。默认情况下,使用已登录到运行 SchTasks 的计算机上的用户的权限运行命令。 -
/p password
指定在/u参数中指定的用户帐户的密码。如果使用/u参数,则需要该参数。 -
/ru {[Domain]User|“System”}
使用指定用户帐户的权限运行任务。默认情况下,使用用户登录到运行 SchTasks 的计算机上的权限运行任务。
|值 |说明 |
| :–| :–|
|[domain}User? | 指定用户帐户。 |
| “System"或”" |指定操作系统使用的 NT Authority\System 帐户。 | -
/p Password
指定用户帐户的密码,该用户帐户在/u参数中指定。如果在指定用户帐户的时候忽略了这个参数,SchTasks.exe 会提示您输入密码而且不显示键入的文本。使用 NT Authority\System 帐户权限运行的任务不需要密码,SchTasks.exe 也不会提示索要密码。
2.1.2 示例
rem 每隔15分钟创建文件夹
schtasks /create /sc minute /mo 15 /tn "realTime" /tr "cmd /c md f:\abc"
rem 每个小时第5分钟执行批处理文件
schtasks /create /sc hourly /st 00:05:00 /tn "CustomBat" /tr c:\my.bat
rem 从2019年5月的第一天起每五小时运行一次
schtasks /create /sc hourly /mo 5 /sd 05/01/2019 /tn "My App" /tr c:\myapp.exe
rem 每天的 8:00 A.M. 运行一次,直到2019年12月31日结束。由于它忽略了/mo 参数,所以使用默认间隔 1 来每天运行命令
schtasks /create /tn "My App" /tr c:\myapp.exe /sc daily /st 08:00:00 /ed 12/31/2019
rem 计划任务每隔一周在周五运行
schtasks /create /tn "My App" /tr c:\myapp.exe /sc weekly /mo 2 /d FRI
rem 计划任务在每月的第一天运行
schtasks /create /tn "My App" /tr c:\myapp.exe /sc monthly
rem 计划任务在每月的最后一天运行
rem 使用 /mo 参数指定在每月的最后一天运行程序,使用通配符 (*) 与 /m 参数表明在每月的最后一天运行程序
schtasks /create /tn "My App" /tr c:\myapp.exe /sc monthly /mo lastday /m *
rem 计划任务在每月的第二个周日运行
schtasks /create /tn "My App" /tr c:\myapp.exe /sc monthly /mo SECOND /d SUN
rem 计划任务在五月和六月的第 15 天运行
schtasks /create /tn "My App" /tr c:\myapp.exe /sc monthly /d 15 /m MAY,JUN /st 15:00:00
rem 计划任务在每次系统启动的时候运行
schtasks /create /tn "My App" /tr c:\myapp.exe /sc onstart /sd 03/15/2019
rem 计划某项任务在计算机空闲的时候运行,使用必需的 /i 参数指定在启动任务之前计算机必需持续空闲十分钟
schtasks /create /tn "My App" /tr c:\myapp.exe /sc onidle /i 10
2.2. schtasks /change
更改一个或多个下列任务属性。
- 任务运行的程序 (/tr)。
- 任务运行的用户帐户 (/ru)。
- 用户帐户的密码 (/rp)。
2.2.1. 语法
schtasks /change /tn TaskName [/s computer [/u [domain\]user /p password]]
[/tr TaskRun] [/ru [Domain\]User | "System"] [/rp Password]
参数
-
/tn TaskName
标识要更改的任务。输入任务名。 -
/s Computer
指定远程计算机的名称或 IP 地址(带有或者没有反斜杠)。默认值是本地计算机。 -
/u [domain]user
使用特定用户帐户的权限运行命令。默认情况下,使用已登录到运行 SchTasks 的计算机上的用户的权限运行命令。 -
/p password
指定在 /u 参数中指定的用户帐户的密码。如果使用 /u 参数,则需要该参数。 -
/tr TaskRun
更改任务运行的程序。输入可执行文件、脚本文件或批处理文件的完全合格的路径和文件名。如果忽略了路径,SchTasks.exe 假定文件在 Systemroot\System32 目录下指定的程序替换任务最初运行的程序。 -
/ru [Domain]User | "System"
更改用于任务的用户帐户。
2.2.2 示例
rem 根据用户名更改任务运行的程序
schtasks /change /tn "Virus Check" /tr C:\VirusCheck2.exe
rem 将程序更改为 System 帐户
rem 更改SecurityScript 任务以使其以 NT Authority\System 帐户权限运行。它使用 /ru "" 参数来表示 System 帐户。
schtasks /change /tn SecurityScript /ru ""
2.3. schtasks /run
立即运行计划任务。
2.3.1 语法
schtasks /run /tn TaskName [/s computer [/u [domain\]user /p password]] /?
参数
-
/tn TaskName
标识任务。该参数是必需的。 -
/s Computer
指定远程计算机的名称或 IP 地址(带有或者没有反斜杠)。默认值是本地计算机。 -
/u [domain]user
使用特定用户帐户的权限运行命令。默认情况下,使用已登录到运行 SchTasks 的计算机上的用户的权限运行命令。 -
/p password
指定在 /u 参数中指定的用户帐户的密码。如果使用 /u 参数,则需要该参数。 -
/?
在命令提示符显示帮助。
2.3.2 示例
rem 立即运行指定任务
schtasks /run /tn "Security Script"
rem 在远程计算机上运行任务
schtasks /run /tn Update /s Svr01
2.4. schtasks /end
终止由任务启动的程序
2.4.1 语法
schtasks /end /tn TaskName [/s computer [/u [domain\]user /p password]] /?
参数
-
/tn TaskName
标识启动程序的任务。该参数是必需的。 -
/s Computer
指定远程计算机(带有或者没有反斜杠)的名称或 IP 地址。默认值是本地计算机。 -
/u [domain]user
使用特定用户帐户的权限运行命令。默认情况下,使用已登录到运行 SchTasks 的计算机上的用户的权限运行命令。 -
/p password
指定在 /u 参数中指定的用户帐户的密码。如果使用 /u 参数,则需要该参数。 -
/?
显示帮助。
2.4.2 示例
rem 终止本地计算机上的任务
schtasks /end /tn "My Notepad"
rem 终止远程计算机上的任务
schtasks /end /tn InternetOn /s Svr01
2.5. schtasks /delete
删除计划任务
2.5.1. 语法
schtasks /delete /tn {TaskName | *} [/f] [/s computer [/u [domain\]user /p password]] [/?]
参数
-
*/tn {TaskName | }
标识要删除的任务。该参数是必需的。值 说明 askName 删除已命名任务。 * 删除计算机上的所有计划任务。 -
/f
阻止确认消息。不警告就删除任务。 -
/s Computer
指定远程计算机的名称或 IP 地址(带有或者没有反斜杠)。默认值是本地计算机。 -
/u [domain]user
使用特定用户帐户的权限运行命令。默认情况下,使用已登录到运行 SchTasks 的计算机上的用户的权限运行命令。 -
/p password
指定在 /u 参数中指定的用户帐户的密码。如果使用 /u 参数,则需要该参数。 -
/?
在命令提示符显示帮助。
2.5.2. 示例
rem 从远程计算机上的计划表中删除任务
schtasks /delete /tn "Start Mail" /s Svr16
rem 删除所有为本地计算机计划的任务。
schtasks /delete /tn * /f
2.6. schtasks /query
查询计划任务
2.6.1. 语法
语法
schtasks [/query] [/fo {TABLE | LIST | CSV}] [/nh] [/v] [/s computer [/u [domain]user /p password]]
参数
-
/query
操作名称可选。键入不带任何参数的 schtasks 来执行查询。 -
/fo {TABLE|LIST|CSV}
指定输出格式。TABLE 为默认值。 -
/nh
忽略表格显示中的列标题。此参数与 TABLE 和 CSV 输出格式共同使用时有效。 -
/v
将任务的高级属性添加到显示中。
使用 /v 的查询应该格式化成 LIST 或 CSV。 -
/s Computer
指定远程计算机的名称或 IP 地址(带有或者没有反斜杠)。默认值是本地计算机。 -
/u [domain]user
使用特定用户帐户的权限运行命令。默认情况下,使用已登录到运行 SchTasks 的计算机上的用户的权限运行命令。 -
/p password
指定在 /u 参数中指定的用户帐户的密码。如果使用 /u 参数,则需要该参数。 -
/?
在命令提示符显示帮助。
2.6.2. 示例
rem 显示本地计算机上的计划任务
schtasks
schtasks /query
rem 显示计划任务的高级属性
schtasks /query /fo LIST /v
rem 将为远程计算机计划的任务记入日志
schtasks /query /s Reskit16 /fo csv /nh >> \\svr01\data\tasklogs\p0102.csv
更多信息参考微软