NiceLeeのBlog 用爱发电 bilibili~

Windows下创建/运行服务或者计划任务

2022-05-14
nIceLee

阅读:


有时候想把某些操作开机启动、登录启动、定时启动或者周期启动,应该不算是一个伪需求吧。。。

服务相关

此处可以衔接上篇博文
前面没讲的主要是如何正确地建立服务。我们可以先查看help

C:\WINDOWS\system32>sc create /?
描述:
        在注册表和服务数据库中创建服务项。
用法:
        sc <server> create [service name] [binPath= ] <option1> <option2>...

选项:
注意: 选项名称包括等号。
      等号和值之间需要一个空格。
 type= <own|share|interact|kernel|filesys|rec|userown|usershare> (默认 = own)
 start= <boot|system|auto|demand|disabled|delayed-auto> (默认 = demand)
 error= <normal|severe|critical|ignore> (默认 = normal)
 binPath= <.exe 文件的 BinaryPathName>
 group= <LoadOrderGroup>
 tag= <yes|no>
 depend= <依存关系(以 / (斜杠)分隔)>
 obj= <AccountName|ObjectName>  (默认= LocalSystem)
 DisplayName= <显示名称>
 password= <密码>

以下为相关命令:

:: 创建服务
sc create 监控ID binpath= "D:\Software\要运行的程序.exe 传给程序的参数, 比如--config config.json" displayname= "监控显示名" start= auto
:: 修改服务描述
sc description monitor_test 监控服务的相关描述
:: 运行服务
sc start XLServicePlatform
:: 停止服务
sc stop XLServicePlatform
:: 删除服务
sc delete 监控ID

计划任务相关

需要用到的命令是AT或者schtasks。但是前者在WIN7以后便不再使用了,主要关注后者。

老规矩,如果不懂可以先查看help

schtasks /?             参数详解
schtasks /create /?    创建计划任务参数详解

以创建每周工作日下午两点执行notepad任务为例子:  
SchTasks /Create /TN TestService /SC WEEKLY /D MON,TUE,WED,THU,FRI /TR "notepad.exe" /ST 14:00
一些参数的含义:
    /create 指的是创建计划任务
    /tn 指定计划任务的名称
    /ru 指定运行该批处理的账号,如果去掉该参数则默认为当前账户运行,会提示输入密码。(一个计划任务所用的账号如果密码变动后该批处理就不再会运行成功)
    /rp 指定账号的密码
    /tr 指定程序所在路径,这里为指定要执行的批处理存放路径。
    /sc 为指定运行的周期
    /d 为日期,一周中的一天或多天 (请使用以下缩写形式:Mon、Tue、Wed、Thu、Fri、Sat、Sun) 或 (月中的一天或多天使用数字 1 到 31)
    /st 为运行时间

下面列举一些例子;
1、每天固定时间,以普通权限启动 notepad.exe

schtasks /Create /TN TestService1 /SC DAILY /ST 01:02 /TR notepad.exe

创建完成之后会在C:\Windows\System32\Tasks目录下生成TestService1文件

2、每天固定时间,以system权限启动 notepad.exe

schtasks /Create /TN TestService2 /SC DAILY /ST 01:02 /TR notepad.exe /RL HIGHEST  

3、创建每月1号下午两点执行任务

schtasks /Create /TN TestService3 /SC MONTHLY /D 1 /TR "notepad.exe" /ST 14:00  

4、创建每周工作日下午两点执行任务

schtasks /Create /TN TestService4 /SC WEEKLY /D MON,TUE,WED,THU,FRI /TR "notepad.exe" /ST 14:00

5、系统启动时运行,无需登录

系统启动时运行notepad.exe,但只当指定了运行账号为system时才成功运行

schtasks /create /tn test /tr notepad.exe /sc onstart /ru                不运行(计划任务显示准备就绪)
schtasks /create /tn test /tr notepad.exe /sc onstart /ru administrator  不运行(计划任务显示准备就绪)
schtasks /create /tn test /tr notepad.exe /sc onstart /ru system         成功运行,启动计算机即运行,无需登录账号,所以不管用哪个账号登录都会运行

6、账号登录时运行

schtasks /create /tn test /tr notepad.exe /sc onlogon   如添加计划任务时使用的账号,登录成功后即运行

相似文章

内容
隐藏