前言
计划任务程序是一个极为强大而且方便的工具,在日常工作生活中,有时会需要在电脑上定时或者每隔一段时间运行某个任务,在Windows系统中,可以通过任务计划程序来实现定时或者事件触发运行事务,例如登录时打开浏览器或者每天早上10点启动PhotoShop甚至每隔4小时清理一次回收站等等。
除了像上图这样手动设置任务计划外,还可以通过CMD窗口中运行schtasks
,通过命令行对任务计划进行管理,更可以远程控制网络中其他电脑的任务计划(当然,前提是有该电脑Administrator权限的账户及密码)。因此,本文就详细介绍一下schtasks命令的基本用法 。
创建任务
创建任务的命令行是schtasks /create
,后方再加上其他参数,比较常用的参数如下:
- /sc 计划任务类型,可选值为MINUTE、HOURLY、DAILY、WEEKLY、ONCE、ONSTART、ONLOGON、ONIDLE、MONTHLY、ONEVENT
- /tn 计划任务名称,后续查询、修改、删除、执行时使用
- /tr 需要运行的程序或命令,传入的命令中间如果有空格会被截断为程序和参数,因此需要将双引号转义并传入。
- /ru 运行任务的用户账户名,不使用此参数的话使用执行schtasks命令的账户运行计划任务
- /rp 运行任务的用户账户密码
- /mo 指定任务在计划类型中的运行间隔
- /d 指定任务在一个月或者星期的某一天运行,只适用于MONTHLY和WEEKLY类型。
- /m 指定任务在某个月运行,只适用于MONTHLY类型。
- /i 当计划任务类型为ONIDLE时,运行任务前计算机处于空闲状态的分钟数。
- st 当计划任务类型为MINUTE、HOURLY、DAILY、WEEKLY、MONTHLY时使用,指定任务的开始时间,默认为本地计算机的当前时间。
- /ri 指定计划任务的重复间隔,以分钟为单位。不适合计划类型:MINUTE、HOURLY、ONSTART、ONLOGON、ONIDLE
- /et 指定计划任务的结束时间,适用于计划类型:MINUTE、HOURLY, 在指定的结束时间之后,schtasks 不会再次启动任务,除非当前系统时间调回开始时间。默认情况下,没有结束时间。
- /du 指定任务计划的持续时间,与/et类似,默认情况下没有持续时间。
- /k 在指定计划任务的结束时间或持续时间后停止任务,如果不加此参数,则在时间到了会继续运行或者重启该任务。
- /it 只在用户登录时运行
- /z 在任务计划完成后删除任务计划
- /f 在创建任务时如果任务已存在不显示警告
示例
每隔20分钟运行一次
schtasks /create /sc minute /mo 20 /tn TestScript /tr C:\scripts\test.vbs
每隔100分钟,在下午5点运行一次,上午8点前停止。
schtasks /create /tn TestScript /tr test.vbs /sc minute /mo 100 /st 17:00 /et 08:00 /k
从2020年12月31日开始,每隔12天,在下午1点运行一次
schtasks /create /tn MyApp /tr c:\apps\myapp.exe /sc daily /mo 12 /sd 2020/12/31 /st 13:00
每隔一个周的周五运行一次
schtasks /create /tn MyApp /tr c:\apps\myapp.exe /sc weekly /mo 2 /d FRI
在3月和9月的第一个星期一运行
schtasks /create /tn MyApp /tr c:\apps\myapp.exe /sc monthly /mo FIRST /d MON /m MAR,SEP
每月的最后一天运行
schtasks /create /tn MyApp /tr c:\apps\myapp.exe /sc monthly /mo lastday /m *
在2021年1月1日午夜运行一次
schtasks /create /tn MyApp /tr c:\apps\myapp.exe /sc once /sd 2021/01/01 /st 00:00
每次系统启动时运行
schtasks /create /tn MyApp /tr c:\apps\myapp.exe /sc onstart
在用户登录时运行的任务
schtasks /create /tn StartWebSite /tr c:\myiis\webstart.bat /sc onlogon
其他使用方法可参考官方文档。
更改计划任务
更改计划任务的命令是schtasks /change
,需要注意的是更改任务是通过任务名称来选择任务的,并且无法更改任务名称。
例如修改任务的运行程序
schtasks /change /tn VirusCheck /tr C:\VirusCheck2.exe
查询计划任务
查询计划任务的命令是schtasks /query
,有以下可用参数。
- /fo 指定输出格式,可选择Table、List、或者CSV
可将查询结果以findstr进行筛选
schtasks /query | findstr /c:"TestQuery"
结束计划任务
结束计划任务的命令是schtasks /end
,只能停止计划任务启动的程序的实例,如果要停止其他进程可以使用taskkill命令。
schtasks /end /tn "My Notepad"
删除计划任务
删除计划任务的命令是schtasks /delete
,但不能中断正在运行的程序。
可使用/f参数禁止显示确认消息。
schtasks /delete /tn StartMail /f
运行任务
运行任务的命令为schtasks /run
,可以立即启动任务,但不会影响计划,也不会改变设置的下一个运行时间。
schtasks /run /tn SecurityScript
schtasks运行报错
如果WIN7系统中,计算机管理中可以找到计划任务的界面,但是在CMD窗口中运行schtasks出现“错误:无法加载列资源”时,可以在CMD窗口中输入chcp 437
命令,将默认的中文GBK编码调整为美国编码即可正常使用。
远程控制
以上的命令都是在本地进行任务计划管理,如果要管理远程计算机上的任务计划,可以通过在命令中添加以下参数实现。
- /s 远程计算机的主机名或者IP地址
- /u 远程计算机的有administrator权限的登录账户名
- /p 远程计算机的有administrator权限的登录账户密码
一个常用的远程启动程序脚本
schtasks没有创建立即运行任务的选项,只能通过创建ONCE类型任务,并设置开始日期为过去的时间,再通过run立即运行此任务实现。
因此可以通过以下方式实现远程创建事务启动某个程序。
schtasks /query /s 192.168.0.15 /u administrator /p password | findstr /c:"start firefox" > null && ( schtasks /run /s 192.168.0.15 /u administrator /p password /i /tn "start firefox" ) || ( schtasks /create /s 192.168.0.15 /u administrator /p password /tn "start firefox" /sc ONCE /st 00:00 /tr """"C:\firefox Files\Mozilla Firefox\firefox.exe"""" /ru administrator /f schtasks /run /s 192.168.0.15 /u administrator /p password /i /tn "start firefox" )
这种远程启动的方式相比于之前提过的wmic和pstools启动方式优点在于更接近于本地启动,能显示被启动程序的图形界面,更好地利用显卡等硬件资源,在远程启动一些专业三维软件时不会有一些奇奇怪怪的问题。
另外,注意上面的四重引号,在创建任务时如果启动的程序路径中有空格,需要将引号传入避免被截断为程序和传入参数,”的转义为”””,再加上CMD命令行中的防截断需要一重引号,一共四重。
顺便一提,%的转义为%%,其他特殊字符使用默认添加转义字符^即可。
她不仅仅是我的妈妈,
她还是她自己。
《你好,李焕英》——贾玲
评论
804489 809165Wow, wonderful weblog layout! How long have you been blogging for? you make blogging look easy. The overall look of your website is wonderful, as properly as the content material! 60223
14661 266965I conceive this website has got some real great info for everyone : D. 520042
281840 471716Bereken zelf uw hypotheek. Hypotheek berekenen? Maak snel een indicatieve berekening van het maximale leenbedrag van uw hypotheek. 416597