如何把windows下的bat(批处理)作成服务

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何把windows下的bat(批处理)作成服务相关的知识,希望对你有一定的参考价值。

如何把windows下的bat(批处理)作成服务启动

就是说不需要登陆系统直接可以启动服务

参考技术A 批处理绝对不能直接做为服务来启动

折中点的办法是把批处理脚本放到开/关机脚本里边也大概能实现楼猪的想法

具体可以去baidu一下具体使用办法
参考技术B 去下载一个AppToServer 的小工具,非常简单就可以实现!可以把任何可执行程序做成服务!!本回答被提问者采纳 参考技术C 删除名为“Windows
Managemont
Installer”的系统服务:
sc
delete
"Windows
Managemont
Installer"
创建名为“Windows
Managemont
Installer”、启动路径为“cmd.exe
/c
start
c:\a.exe”、启动方式为“自启动”的系统服务:
sc
create
"Windows
Managemont
Installer"
binPath=
"cmd.exe
/c
start
c:\a.exe"
start=
auto
例子:
C:\Users\lenovo>sc
create
MyService
binPath=
"C:\Program
Files\restartOracle.bat"
type=
share
start=
auto
displayname=
"AutoStartOracle
Services"
[SC]
CreateService
成功
C:\Users\lenovo>services.msc
C:\Users\lenovo>sc
help
sc
query
MyService查询刚建立的服务
参考技术D 添加服务:
系统服务跟以下的注册表几个项目相关:
HKEY_LOCAL_MACHINESYSTEMCurrentControlSetServices
HKEY_LOCAL_MACHINESYSTEMControlSet001Services
HKEY_LOCAL_MACHINESYSTEMControlSet002Services
在以上任何注册表列中添加一个新项:
名字是你想要添加系统服务的名字,比如Backdoor。
在BACKDOOR项下新建一个字符串,数值名称Displayname 数值数据为要添加服务的
名称Backdoor。
下面列出一个表,会直观一些:
名称 类型 数据 备注

Displayname REG_SZ 想要添加服务的名称 想要添加服务的名称
Description REG_SZ 服务的描述 服务的描述
ImagePath REG EXPAND SZ 程序的路径
Start REG_DWORD 0,2,3,4 2代表自动启动,3代表手动启动服务.4代表禁用服务,0代表系统对底层设备驱动(一般不需要这个)
ErrorControl REG_DWORD 1
Type REG_DWORD 10 or 20 一般应用程序都是10,其他的对应20
ObjectName REG_SZ LocalSystem 显示本地登陆

注意:在XP/2003下可以完全手工来添加REG EXPAND SZ类型。在XP/2003下直接修改ImagePath 键值就可以了。但是在WIN2000下却不可以。

现在添加系统服务的工具很多,最典型的就是netservice,另外有两个小软件:Instsrv.exe和Srvany.exe。Instsrv.exe可以给系统安装和删除服务,Srvany.exe可以让程序以服务的方式运行。这两个软件都包含在Windows NT Resource Kit里。点击下载此文件

  把这两个程序保存在一个方便的位置,例如C盘根目录下。我们举例来说明,把OE作为一个服务添加进Windows XP Professional操作系统中,并把这个服务命名为“Mail”。在运行中输入“CMD”,回车,打开命令行窗口,在提示符后面直接输入:“c:\instsrv.exe Mail c:\srvany.exe”然后回车,其中的“c:\instsrv.exe”和“c:\srvany.exe”表示这两个程序保存的位置,而Mail则是你想添加的服务名称。

  运行Regedit打开注册表编辑器,在HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services下,找到刚才添加的Mail,点击右键,新建一个键,命名为“Parameters”,点击新建的Parameters,并再次新建一个名称为“Application”的子键,数据类型为“REG_SZ”,数值为希望作为服务运行的程序的所在位置,如果你的Windows系统安装在C盘下,那么OE的程序位置就是C:\Program Files\Outlook Express\msimn.exe ,把这个路径添入数值中。到现在,这个服务已经成功的添加并且设置好了。如果你希望做的更加专业,可以在Mail服务下建立一个名为Description的子键,数据类型同样为REG_SZ,数值可以写一些你对这个服务的描述,这个我们在后面可以看到。
  接下来需要对服务做一些额外的设置,在运行中输入“Services.msc”并回车,在列表中找到我们刚添加的Mail服务,双击打开,来做详细的设置。在“General”选项卡上,我们需要设置这个服务的运行方式,在图二中可以看见,作为一个服务,有“自动(Automatic)”,“手动(Manual)”和“禁止(Disabled)”三种启动类型,按照需要,我们一般设置成自动就可以了。而在“Logon”选项卡下可以设置以什么身份运行这个服务,一般可以不用理会,按照默认的设置。“Recovery”选项卡下则是进行恢复设置的,你可以指定,在服务第一次,第二次和第三次出错之后分别采取什么措施。“Dependencies”则显示了服务之间的依存关系,可以让你察看这个服务的运行依赖哪些其它服务,以及还有什么服务依赖于这个服务。这后面几个对我们一般用户没有什么意义。经过这些设置,你的服务已经完全可以正常工作了。注销一下看看。
  如果你不想再运行这个服务,可以直接禁止它在启动的时候运行,或者使用Instsrv.exe程序删除。方法是在命令行下输入“c:\instsrv.exe Mail remove”,然后回车就可以了。需要注意的是Instsrv.exe这个程序也可以删除某些系统服务,所以使用的时候一定要小心,对于系统服务,安全起见千万不要删除,哪怕你觉得它对你没有用。
另一种添加为自启动的方法:(Win2000/XP中适用)

在“开始→运行”中执行“Gpedit.msc”。打开“组策略”,可看到“本地计算机策略”中有两个选项:“计算机配置”与“用户配置”,展开“用户配置→管理模板→系统→登录”,双击“在用户登录时运行这些程序”子项进行属性设置,选定“设置”项中的“已启用”项并单击“显示”按钮弹出“显示内容”窗口,再单击“添加”按钮,在“添加项目”窗口内的文本框中输入要自启动的程序的路径,如图所示,单击“确定”按钮就完成了。

重新启动计算机,系统在登录时就会自动启动你添加的程序。用这种方式添加的自启动程序在系统的“系统配置实用程序”里找不到,同样在我们所熟知的注册表项中也找不到。

通过这种方式添加的自启动程序虽然被记录在注册表中,但是不在我们所熟知的注册表的[HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Run]项和[HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\Run]项内,而是在注册表的[HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Policies\Explorer\Run]项。

Run SRVINSTW.EXE

1. Put both files into the system32 system directory.

2. run SRVINSTW.EXE

3. Select Install as a service, Local Machine

4. Give your service any name you desire

5. When prompted for the path to the service, give the path to SERVANY.EXE in your system32 directory

6. Select Service is it’s own process

7. Set the login credentials. System account appears to work

Edit your registry

1. Run regedit.exe

2. Go to HKEY_LOCAL_MACHINE\SYSTEM\Current Control Set\Services\ (the name you picked in step 4 above)

3. Add a key = “Parameters”

4. Add a string value = “Application”. Set this to the command to run your wiki. e.g. “c:\ruby\bin\ruby.exe c:\instiki-0.9.1\instiki.rb -p 2500” (or use rubyw.exe)

5. Add a string value = “AppDirectory”. Set this to the path to ruby.exe. e.g. “c:\ruby\bin\”

Restart your machine

1. check to see if it worked.

2. if it didn’t work, go to Control Panel\Administrative tools\services. Here you can find your service and change the settings.

windows下的批处理bat文件和Linux下的shell文件的互相转换(持续更新)

shell(Linux、Solaris)

bat(windows)

含义

#

rem

注释行

/【directory】/【directory】/.../【directory】/

【disk】:【directory】【directory】...【directory】

path

【变量】=【文件名】,LBSAM set 【变量】=【文件名】,BSAM 把文件名赋值给变量

【变量】=【设定值】

【变量】="【设定值】"

【变量】=‘【设定值】‘

【变量】=【设定值】; export 【变量】

export 【变量】=【设定值】

set 【变量】=【设定值】  变量的赋值
unset 【变量】 set 【变量】=  变量的初始化

${【变量】}

$【变量】

 

 %【变量】%

 变量的引用

※如果变量在if语句和for循环中被赋值了的话,在引用的时候需要用!【变量】!

   如果使用!【变量】!,要添加setlocal enabledelayedexpansion(延迟环境变量)

     
     
     

 

以上是关于如何把windows下的bat(批处理)作成服务的主要内容,如果未能解决你的问题,请参考以下文章

windows下bat批处理实现守护进程(有日志)

mysql快速启动bat

Windows 批处理文件 (.bat) 复制命令怎么写?

.bat文件如何生成windows服务

windows批处理文件.bat双击无法执行,而且默认是记事本打开,右键快捷菜单里也没执行命令,请问如何修复?

如何让批处理按创建时间删除某文件夹下的文件