目录
- 1. at 命令
- 1.1 at 命令基本语法
- 1.2 at 创建任务计划
- 1.3 查看 at 创建了哪些任务计划
- 2. schtasks 命令
- 2.1 schtasks 命令基本语法
- 2.2 schtasks 创建任务计划
- 2.3 schtasks 修改任务计划
- 2.4 schtasks 立即运行任务计划
- 2.5 schtasks 终止由任务启动的程序
- 2.6 schtasks 查看任务计划
- 2.7 schtasks 删除任务计划
- 使用bat文件创建系统的任务计划程序
本文主要介绍使用 at 和 schtasks 两个命令实现常见任务计划的增删查改等操作。其中 at 命令功能比较单一,可以设置的任务计划的属性较少,多用于 XP 等老系统;相比之下 schtasks 的功能较为丰富,Win7 / Win10 等系统建议使用 schtasks 命令管理任务计划。
对于 Windows 系统管理员来说,经常遇到的操作可能包括:
进程服务注册表任务计划防火墙网络用户和组共享FTP
一方面,初学批处理脚本的朋友们往往习惯于通过goto等死循环的方式实现每隔XX时间执行一次某命令,这样的方式只适合练习一下语法或者在自己电脑上做个小试验。如果要放在公司的服务器上,是不太合适的,因为这种死循环的方式太浪费系统资源。推荐的方式是把脚本放在任务计划里面定期执行。
另一方面,某些恶意脚本也喜欢创建任务计划定时执行恶意操作,某些讨厌的软件也经常通过任务计划定期更新版本或弹窗等。熟练掌握相关命令行的操作,也有助于解决此类问题。
1. at 命令
1.1 at 命令基本语法
at [\\\\computername] [ [id] [/delete] | /delete [/yes]]at [\\\\computername] time [/interactive] [ /every:date[,…] | /next:date[,…]] "command"
常用参数列表:
1.2 at 创建任务计划
# 今天下午2:30自动关机
at 14:30 shutdown /s /f /t 0
# 每天晚上11点自动关机
at 23:00 /every:m,t,w,th,f,s,su shutdown /s /f /t 0
# 每周一到周五早上9点执行脚本 C:\\Test Backup.bat
at 09:00 /every:m,t,w,th,f cmd /c \”C:\\Test Backup.bat\”
例如 C:\\Test Backup.bat 脚本内容是:
@echo off
if not exist \”E:\\Log\\\” (
md \”E:\\Log\”
)
copy /y \”C:\\Windows\\WindowsUpdate.log\” \”E:\\Log\\\”
1.3 查看 at 创建了哪些任务计划
直接执行 at 命令不带任何参数即可。
C:\\>at
状态 ID 日期 时间 命令行
——————————————————————————-
1 今天 14:30 shutdown /s /f /t 0
2 每月执行日期:… 23:00 shutdown /s /f /t 0
3 每月执行日期:… 9:00 cmd /c \”C:\\Test Backup.bat\”
1.4 删除ID为2的 at 任务计划
at 2 /delete /yes
1.5 删除所有的 at 任务计划
at /delete /yes
1.6 获得 SYSTEM 权限的命令行窗口
XP 系统有个小技巧,可以用 at 命令获取一个系统权限的命令行窗口,通常可以使用这个方法结束某些恶意进程、删除某些顽固文件等。假如现在的时间为16:46,运行下面的命令,会在一分钟后打开一个 SYSTEM 权限的命令行窗口。
at 16:47 /interactive %ComSpec%
2. schtasks 命令
2.1 schtasks 命令基本语法
2.2 schtasks 创建任务计划
schtasks /create 命令的主要参数:
# 每天晚上8点30分关机
schtasks /create /tn \”BatHome Job 2.2.01\” /tr \”shutdown /s /f /t 0\” /sc daily /st 20:30:00 /ru System
注:服务器上的普通用户或管理员用户通常强制要求定期更改密码,更改密码之后,该用户创建的任务计划将会无法执行,需要手工更改存储在任务中的密码。创建任务计划的时候指定使用 System 用户将不存在定期更改密码的问题。
# 每10分钟执行一次某个脚本
schtasks /create /tn \”BatHome Job 2.2.02\” /tr \”\”\”\”C:\\Test\\2.2.02 Backup.bat\”\”\”\” /sc minute /mo 10 /ru System
注:待执行的程序路径中包含空格等特殊字符的情况下,需要增加额外的双引号。
# 每小时过三分的时候运行一次
schtasks /create /tn \”BatHome Job 2.2.03\” /tr \”C:\\Test\\2.2.03.bat\” /sc hourly /st 00:03:00 /ru System
注:因为忽略了 /mo 参数,命令使用了小时计划的默认值,即每1小时执行一次。
# 从某天开始每三小时运行一次
schtasks /create /tn \”BatHome Job 2.2.04\” /tr \”C:\\Test\\2.2.04.bat\” /sc hourly /mo 3 /sd 2022/09/29 /ru System
注:使用 /mo 参数来指定间隔时间,使用 /sd 参数来指定起始日期。由于命令没有指定起始时间,当前时间被用作起始时间。
# 每天运行一次直到某天为止
schtasks /create /tn \”BatHome Job 2.2.05\” /tr \”C:\\Test\\2.2.05.bat\” /sc daily /st 09:00:00 /ed 2022/12/31 /ru System
注:忽略了 /mo 参数,所以使用默认间隔 1 来每天上午9点运行命令。使用 /ed 参数指定到2022年12月31日结束。
# 从某天开始每隔一天运行一次
schtasks /create /tn \”BatHome Job 2.2.06\” /tr \”C:\\Test\\2.2.06.bat\” /sc daily /mo 2 /st 15:00:00 /sd 2022/09/29 /ru System
注:使用 /mo 参数来指定 2 天的间隔。
# 每三周运行一次
schtasks /create /tn \”BatHome Job 2.2.07\” /tr \”C:\\Test\\2.2.07.bat\” /sc weekly /mo 3 /ru System
# 每月的第一天运行
schtasks /create /tn \”BatHome Job 2.2.08\” /tr \”C:\\Test\\2.2.08.bat\” /sc monthly /ru System
# 每月的最后一天运行
schtasks /create /tn \”BatHome Job 2.2.09\” /tr \”C:\\Test\\2.2.09.bat\” /sc monthly /mo lastday /m * /ru System
# 每月的第三个周五运行
schtasks /create /tn \”BatHome Job 2.2.10\” /tr \”C:\\Test\\2.2.10.bat\” /sc monthly /mo third /d fri /ru System
# 第四季度每月的第三天运行
schtasks /create /tn \”BatHome Job 2.2.11\” /tr \”C:\\Test\\2.2.11.bat\” /sc monthly /d 3 /m oct,nov,dec /ru System
# 指定日期时间运行一次
schtasks /create /tn \”BatHome Job 2.2.12\” /tr \”C:\\Test\\2.2.12.bat\” /sc once /st 22:00:00 /sd 2022/09/29 /ru System
# 每次系统启动的时候运行
schtasks /create /tn \”BatHome Job 2.2.13\” /tr \”C:\\Test\\2.2.13.bat\” /sc onstart /ru System
# 每当用户登录的时候运行
schtasks /create /tn \”BatHome Job 2.2.14\” /tr \”C:\\Test\\2.2.14.bat\” /sc onlogon /ru System
# 空闲指定时长的时候运行
schtasks /create /tn \”BatHome Job 2.2.15\” /tr \”C:\\Test\\2.2.15.bat\” /sc onidle /i 15 /ru System
注:使用 /i 参数指定系统空闲15分钟后运行。
2.3 schtasks 修改任务计划
schtasks /change /tn TaskName [/s computer [/u [domain\\]user /p password]] [/tr TaskRun] [/ru [Domain\\]User | \”System\”] [/rp Password]
2.4 schtasks 立即运行任务计划
schtasks /run /tn TaskName [/s computer [/u [domain\\]user /p password]]
注:忽略原有计划,立即运行任务计划。不会更改任务计划好的下次运行时间。
2.5 schtasks 终止由任务启动的程序
schtasks /end /tn TaskName [/s computer [/u [domain\\]user /p password]]
2.6 schtasks 查看任务计划
schtasks [/query] [/fo {TABLE | LIST | CSV}] [/nh] [/v] [/s computer [/u [domain\\]user /p password]]
注:Win7 命令行窗口的中文状态下 schtasks /query 可能会出错,可以先用chcp命令切换到英文。
chcp 437
schtasks /query
2.7 schtasks 删除任务计划
schtasks /delete /tn {TaskName | *} [/f] [/s computer [/u [domain\\]user /p password]]
# 删除指定名称的任务计划
schtasks /delete /tn \”GoogleUpdateTaskMachineUA\” /f
# 删除所有的任务计划
schtasks /delete /tn * /f
注:慎重执行!系统有很多默认的任务计划,请做好充分的备份。
2.8 没有参数对应的属性如何修改
例如:没有哪个参数可以设置“如果任务运行时间超过以下时间,停止任务”
1) 创建任务计划:
schtasks /create /tn \”BatHome Job 2.8.01\” /tr \”C:\\Test\\2.8.01.bat\” /sc daily /mo 1 /st 15:14 /ru System
2) 打开任务计划程序图形界面,手工设置好超时时间,然后导出xml
# 默认值是3天:
<ExecutionTimeLimit>PT72H</ExecutionTimeLimit>
# 修改成1小时之后:
<ExecutionTimeLimit>PT1H</ExecutionTimeLimit>
3) 用修改后的xml文件去创建任务计划
schtasks /create /ru System /tn \”BatHome Job 2.8.02\” /xml \”C:\\Test\\2.8.02.xml\”
使用bat文件创建系统的任务计划程序
最近由于需要在电脑上添加任务计划用来调用自己的脚本,由于使用一段是时间后需要重装系统,有需要重新进行设置,感觉很麻烦,没有双击一下文件就能创建好的方便。下面是脚本的内容,创建完成后,在电脑启动后3分钟时执行,目标路径下的bat脚本。可以根据自己的需求修改
@echo off
set curDir=C:\\Users\\Administrator\\Desktop\\test\\
schtasks /create /tn record /ru system /tr \”\’%curDir%sclect.bat\’\” /sc onStart /delay 0003:00 /rl highest /F /np
@echo on
简单说一下我了解的几个参数吧,具体的太复杂了没专门去研究。/ru system :加上这个的话创建的任务计划就是system用户创建的,删除这个参数的话运行就是当前用户创建的任务/tr "'%curDir%sclect.bat'":是通配符的脚本路径,由于有的直接输入时会有问题,特殊字符等等导致无法执行,因此经路径拆分处理,这里拼接一下可以很方便的解决。/delay 0003:00:这个应该就是启动后延时3分钟启动,没有专门研究,可以根据自己的需求修改(0010:00,启动后延迟10分钟 ;0000:00启动后不延迟)其他的我就不太清楚了,解读到此结束,希望对大家有帮助。
到此这篇关于批处理bat系统管理之任务计划篇的文章就介绍到这了,更多相关bat任务计划内容请搜索悠久资源网以前的文章或继续浏览下面的相关文章希望大家以后多多支持悠久资源网!
您可能感兴趣的文章:
- bat批处理脚本中文乱码的解决
- Windows批处理文件(.bat和.cmd)及区别详解
- Windows 批处理cmd/bat常用命令详解
- 教你编写bat脚本Windows批处理
- bat批处理脚本控制台输出中文乱码问题及解决方法