windows自定义程序服务无法打开bat文件

作者&投稿:法临 (若有异议请与网页底部的电邮联系)
将windows服务程序 的安装 启动 卸载 写成bat文件执行 请问如何写~

安装:程序名 + /install 或程序名 + /service
启动:net start + 服务名 或 sc start +服务名
停止:net stop + 服务名 或 sc stop +服务名
卸载:sc delete +服务名 或 程序名+ /uninstall
例:对C盘根目录下的AA.exe(服务名:AA)进行操作的BAT如下:
C:\\aa /install
sc start aa
sc stop aa
c:\\aa /uninstall

把tomcat设为开机启动不行了,为什么还要这样做了,设置tomcat开机启动,在控制面板里找到管理工具,然后找到服务这一项,找到tomcat的服务,右键点击,选择属性,就可以看到启动类型,选择自动就行了,希望能帮到你

根据你的最新补充,我怀疑你的问题是出在监听程序上,你是不是没有使用windows 自带的程序?

关闭和重启的语句写得过于简单了,可能在杀掉cmd的同时,有些依存服务受到了影响.

我建议改一下批处理:仅仅只是杀掉.bat的那个进程.再重新启动.bat批处理文件.建议你好好看下下面的文件.

  有几个问题需要你明确一下:

  1. 你是没有采用windows 自带的:服务控制管理器来启动系统服务么?

  2. 你没有使用instsrv.exe和srvany.exe来创建自定义的windows服务么?

  3. 你的.bat有没有加入程序判断操作系统的,根据不同操作系统来执行?

  4. 要想作为服务启动。bat文件得符合规定的特定格式的。

  你的.bat文件是否成功运行,只是并未显示DOS窗口.

  希望能帮助到你.

  对于1:你可以如下操作

  采用instsrv.exe /srvany.exe

  用instsrv.exe /srvany.exe 注册windows 服务方法:

  •   1. 注册服务: x:/xxx/instsrv 服务名 x:/xxx/srvany.exe(注意得使用"/")

  -------- 将srvany.exe 注册成系统服务

  2. regedit打开注册表

  3. 进入HKEY_LOCAL_MACHINE/SYSTEM/CurrentControlSet/Services/服务名

  4. 右键-新建-项 填入 Parameters

  5. 打开Parameters,右键-新建-字符串值 Application

  6. 双击Application 填入 应用程序的绝对路径,如: E:/jboss-4.0.5.GA/bin/starteos.bat

  7. 右键-新建-字符串值AppDirectory

  8. 双击AppDirectory 填入 应用程序的工作目录,如: E:/jboss-4.0.5.GA/bin

  ----------- 通过srvany.exe 启动注册表中定义的。exe 应用

  9. 启动服务。

  (注意: 7与8不可或缺)

  在windows 服务管理器中看到定义的服务…

  •   对于2:你可以采用如下操作:

  第一步:

  下载微软系统小工具 instsrv.exe和srvany.exe至C:\Windows\System32。
第二步:

  运行Dos命令代码:instsrv ServiceName C:\Windows\System32\srvany.exe
    (ServiceName 即你自己定义的服务名称,可以是要作为系统服务启动的应用程序的名称。) 
第三步:

  打开注册表,定位到下面的路径。
    HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\ServiceName 
    (同样的ServiceName是你刚才安装服务时自定义的服务名称。) 
    如果该服务名下没有Parameters项目,则对服务名称项目右击新建项,名称为Parameters,然后定位到Parameters项,新建以下几个字符串值。 
    名称 Application 值为你要作为服务运行的BAT文件地址。 
    名称 AppDirectory 值为你要作为服务运行的BAT文件所在文件夹路径。 
    名称 AppParameters 值为你要作为服务运行的BAT文件启动所需要的参数。 

注:instsrv ServiceName remove 命令可删除服务。


  •   对于3:判断WINDOWS 操作系统

  [plain]

  :home

  @echo off

  cls

  @echo  ================= 判断Windows版本 ============================

  rem 选择测试三种方法

  @echo [1]测试方法一

  @echo [2]测试方法二

  @echo [3]测试方法三

  @echo [Q]结束测试
 

  @echo ============================================================

  set /p testa=选择测试方法(记得回车):

  if /i %testa%==1 goto test0

  if /i %testa%==2 goto test1

  if /i %testa%==3 goto test2

  if /i %testa%==Q goto exit

  www.2cto.com

  :test0

  rem ================================方法一===============================

  rem @echo 返回值: isXPlevel=1 XP级别;isXPlevel=2 高于XP级别;isXPlevel=0 低于XP级别

  rem set isXPlevel=0  set isXPlevel=1 &  ,set isXPlevel=2 &

  ver|findstr "5\.[0-9]\.[0-9][0-9]*" > nul && (goto show0)

  ver|findstr "6\.[0-9]\.[0-9][0-9]*" > nul && (goto show01)

  goto show02

  

  :show0

  @echo ---------------- 测试方法一 ------------

  @echo           当前系统是: XP级别

  @echo ----------------------------------------

  goto end

  

  :show01

  @echo ---------------- 测试方法一 ------------

  @echo           当前系统是:高于XP级别

  @echo ----------------------------------------

  goto end

  

  :show02

  @echo ---------------- 测试方法一 ------------

  @echo           当前系统是:低于XP级别

  @echo ----------------------------------------

  goto end

  rem ================================方法一结束===============================

  www.2cto.com

  :test1

  rem ================================方法二===============================

  ver | find "5.0." > NUL &&  goto show50

  ver | find "5.1." > NUL &&  goto show51

  ver | find "5.2." > NUL &&  goto show52

  ver | find "6.0." > NUL &&  goto show60

  ver | find "6.1." > NUL &&  goto show61

  

  :show50

  @echo ---------------- 测试方法二 ------------

  @echo 当前系统是:[ set XT=Windows2000  ]

  @echo ----------------------------------------

  goto end

  

  :show51

  @echo ---------------- 测试方法二 ------------

  @echo 当前系统是:[ set XT=WindowsXP ]

  @echo ----------------------------------------

  goto end

  

  :show52

  @echo ---------------- 测试方法二 ------------

  @echo 当前系统是:[ set XT=Windows2003 ]

  @echo ----------------------------------------

  goto end

  

  :show60

  @echo ---------------- 测试方法二 ------------

  @echo 当前系统是:[ set XT=WindowsVista ]

  @echo ----------------------------------------

  goto end

  

  :show61

  @echo ---------------- 测试方法二 ------------

  @echo 当前系统是:[ set XT=Windows7 ]

  @echo ----------------------------------------

  goto end    www.2cto.com

  rem ================================方法二结束===============================

  

  :test2

  rem ================================方法三结束===============================

  ver | find /i "6.1." > NUL

  if %errorlevel% equ 0 (goto win7)

  

  ver | find /i "5.1."  > NUL

  if %errorlevel% equ 0 (goto winXP)

  

  :NoneTest

  @echo ---------------- 测试方法三 ------------

  @echo 当前系统暂无识别数据,请直接查看系统版本:

  ver

  @echo ----------------------------------------

  goto end

  

  :win7

  @echo ---------------- 测试方法三 ------------

  @echo 当前系统是:Win7!!!

  @echo ----------------------------------------

  goto end

  

  :winXP

  @echo ---------------- 测试方法三 ------------

  @echo 当前系统是:winXP!!!

  @echo ----------------------------------------

  goto end

  rem ================================方法三结束===============================

  www.2cto.com

  :end

  pause

  

  goto Home

  :exit
 

  1.

  用批处理判断操作系统是32位还是64位,并注册install服务。


  @echo off
if /i "%PROCESSOR_IDENTIFIER:~0,3%" == "X86" goto 1 /////通过参数判定操作系统位数,并跳转
if /i "%PROCESSOR_IDENTIFIER:~0,3%" NEQ "X86" goto 2 ///此条语句后面可以改为 EQU "EM6"
:1  /////32位xp注册install服务
%windir%\system32\msiexec.exe /regserver exit


:2  /////64位xp注册install服务
%windir%\syswow64\msiexec.exe /regserver
%windir%\system32\msiexec.exe /unreg
%windir%\system32\msiexec.exe /regserver
exit


  2.用批处理判断操作系统是XP还是WIN7,并执行相应的.bat文件。


  建议用ver配合find来判断 系统版本,就用不着按键盘了。

@ver|find "5.1"
@if errorlevel 1 goto win7
@if errorlevel 0 goto winxp
:winXP
@call winxp.bat
@goto end
:win7
@call win7.bat
@goto end
:end


  2.

  Devcon实现视频设备Driver切换

  。


  @echo off

  set path=%~dp0
set DevconPath=%path?vcon
::set InfPath=%path:~0,-13%st50220.inf
set InfPath=%systemroot%\inf\st50220.inf
echo InfPath=%InfPath%
echo.
::Set WinInf=%systemroot%\inf\usbvideo.inf

  if /i "%PROCESSOR_IDENTIFIER:~0,3%" == "X86" (set devcon=sndc_x86) ELSE (set devcon=sndc_x64)

  cd ?vconPath%

  ?vcon% hwids USB\Vid_0c45* >DevInfo.bat

  (for /l %%a in (1 1 1) do set /p id=)<DevInfo.bat
del DevInfo.bat

  setlocal enabledelayedexpansion
set DevID=!id:~0,21!^&MI_00
echo DevID=!DevID!
echo.

  ::?vcon% update !WinInf! !devID!
?vcon% update !InfPath! !DevID!
echo.
endlocal

  if %errorlevel% equ 0 (goto success) ELSE (goto fail)


:success
echo ~~~~~~~~~~~~~~~~~~~~~~~~~~~~
echo Sonix Driver Update Success!
echo ~~~~~~~~~~~~~~~~~~~~~~~~~~~~
goto end


:fail
echo ~~~~~~~~~~~~~~~~~~~~~~~~~
echo Sonix Driver Update Fail!
echo ~~~~~~~~~~~~~~~~~~~~~~~~~
goto end

  :end
pause

  

  注:这个批处理是调用Devcon工具的处理,得下载devcon工具,具体用devcon help就可以知道它的各种用途。

  代码说明:
1、%~dp0当前所在路径
2、%path?vcon即path字符后面加上devcon字符串
3、path:~0,-13取取path的0至倒数第十三个字符
4、systemroot批处理自动变量。若系统装在c盘,则代表c:\windows
5、echo. 输出空白行
6、"%PROCESSOR_IDENTIFIER:~0,3%" == "X86"  判断系统是否为32位系统
7、?vcon% hwids USB\Vid_0c45* >DevInfo.bat 用deccon的hwids功能,显示包含后面字段的硬件设备,并保存到DevInfo.bat文件中.
>  文件若有,则更新替换现有内容;没有,就创建并保存内容到里面
>> 文件若有,则将新的内容添加在现有内容后面;若没有则创建,并将内容保存至里面。
8、(for /l %%a in (1 1 1) do set /p id=)<DevInfo.bat将DevInfo.bat内容的第一行赋值给id
for里面的变量注意用%%
9、set DevID=!id:~0,21!^&MI_00 将id从0开始前21个字符再加上&MI_00赋值给DevID.
因为&是特殊字符,所以要在前面加转义字符^。
10、有特殊字符的变量必须用""整个括起来,如 set "a=abc&123" echo %a%
还有一种方式就是添加
setlocal enabledelayedexpansion
endlocal
其间的变量就可以含特殊字符,但变量的使用要加!!,本示例就是用的此法。
11、::注释行
12、@取消本行的回显
13、echo on打开回显
    echo off 关闭回显




Windows边栏可以自定义边栏吗?
Windows边栏提供了丰富的自定义选项,让你能够根据个人需求进行调整。首先,你可以自由选择哪些已安装的小工具添加到边栏,只需决定哪些工具对你最有用,而不需要的则可以轻松移除。如果你需要使用多个实例,只需将特定小工具添加多次,或者将它们从边栏分离出来,放置在桌面上以方便随时访问。对于工作流程的...

如何在Windows中自定义颜色
选择配色方案按Windows key,键入设置,然后按Enter。在 Windows 11 中,选择“设置”窗口左侧的“个性化”,然后单击窗口右侧的“颜色”选项。在 Windows 10 中,在“设置”窗口左侧的“个性化”下,选择“颜色”选项(如果尚未选择)。从Windows 颜色部分下屏幕中央的调色板中选择一种颜色。提示选中“自...

如何在Windows 10中自定义桌面和任务栏图标?
安全第一,使用系统内置防护从"开始"菜单进入"Windows安全中心",无需安装第三方软件,就能对系统进行基础防护,根据你的需求进行个性化设置。解锁专业功能:屏幕录制通过按[Windows R]快捷键,打开"运行",输入指令后启动屏幕录制工具。在"设置"中,调整视频输出位置,记录你的工作或教程分享。Windows 10的...

安装Windows7时升级安装和自定义有什么区别
二、自定义安装:是指用户可以自定义安装操作系统的磁盘分区,是否联机安装等等,关于很多升级的设置是需要自己手动设置的,如果选择自定义安装的话在数据迁移的过程中,win7版操作系统用户可以依照自己的选择进行数据迁移,安装过程中可能会丢失安装盘原来的数据。三、两种升级方法各有各的好处,但是要视实际...

windows系统自定义右键发送到菜单设置方法介绍_windows系统自定义右...
Windows系统为文件和文件夹提供了便捷的右键操作,比如将文件发送到桌面创建快捷方式。然而,有时你可能希望将文件发送到特定的文件夹,如金山快盘或其他自定义位置。绿茶小编接下来会教你如何在Windows系统中设置自定义的右键发送到菜单,以满足个性化需求。通常,右键菜单中提供的选项相对有限,但隐藏的高级...

win系统电脑的windows命令怎么自定义
今天给大家介绍一下win系统电脑的windows命令怎么自定义的具体操作步骤。1. 最简单但是不太实用的方法是将我们想要运行的软件粘贴到C盘的windows文件夹里就可以了。不太实用的意思就是这样操作的话,不仅会拖慢系统速度,还不一定可以正常运行。2. 下面我们通过调用windowsAPI函数编写一个程序来实现。这里会...

安装win10出现升级和自定义应该选哪个
要安装系统,需要选择“自定义:仅安装Windows(高级)”。升级:从低级系统升级到Windows10时,可以选择“安装Windows并保留文件、设置和应用程序”。操作步骤如下:一、选择“自定义:仅安装Windows(高级)”;二、选择C盘,根据磁盘大小判断哪个分区是C盘;三、进入系统文件发布流程,等待发布完成;四、...

Windows 11系统如何自定义虚拟内存大小
现在大部分新款笔记本电脑都是Windows 11系统,有些用户想知道如何自定义虚拟内存大小,接下来小编就给大家介绍一下具体的操作步骤。具体如下:1. 首先第一步先点击任务栏【开始】图标,接着在弹出的菜单栏中根据下图箭头所指,点击【设置】图标。2. 第二步打开【设置】窗口后,先点击【系统】选项,接...

windows10自定义设置文件夹图标的方法
那么windows10如何自定义设置文件夹图标呢?其实很简单的,我们可以自己搜索喜欢的图案当做文件夹图标,下面一起看下具体的设置方法吧。具体方法如下:1、在浏览器里以IOC图标为例搜索下载自己喜欢的图案;2、在想要修改的文件夹上单击鼠标右键,选择【属性】;3、选择第四个【自定义】;4、点击【更改...

什么是热键如何在Win10和11自定义热键
QuickTextPaste 和 HotkeyP 是第三方 Windows 应用程序,您可以使用它们设置用于粘贴文本片段的替代自定义热键。通过这种方式,您可以创建独特的热键来粘贴地址、姓名、数字和其他文本片段,您经常需要使用这些应用程序将其输入到文字处理程序或浏览器中。如何设置热键以使用 QuickTextPaste 粘贴预定义文本 QuickTex...

钢城区17850624782: 无法访问Windows Installer服务 -
宇璧中华: 如果还是启动不了就建立个新"文本文档"把下面的复制进去 更改名字installer.reg会自动生成注册表,双击导入,在右健点我的电脑选择管理项,点服务和应用程序,点服务 在右边找到installer,右健点击 选择属性,设置启动类型为手动 ...

钢城区17850624782: Windows Defender无法启动 -
宇璧中华: 方法如下:1、找到“服务”启动windows Defender这个软件的系统运行组件:通过键盘的“Windows徽标键+R”(同时按下)打开运行窗口,在输入框中输入“services.msc”,会弹出系统服务所依赖的所有组件.2、这时,鼠标双击(或鼠...

钢城区17850624782: WINDOWS无法打开“添加打印机”,本地后台打印程序服务没有运行,请重新启动后台打印程序或重新启动计算机 -
宇璧中华: 可能是你的安全软件限制了,看一下360或者腾讯管家之类的,里面有一个启动项优化,里面应该可以找到这个服务 开始--运行--services.msc--进入Print Spooler设置 自动启动 试试在服务里有个“print spooler”,右击,点属性,将“登录”选...

钢城区17850624782: win7 依赖服务或组无法启动了,打开组件服务,在计算机栏又卡住,怎么 -
宇璧中华: 1.运行 输出dcomcnfg 2.组件服务-计算机-我的电脑-DCOM配置-netprofm 3.右键属性-安全-启动和激活权限-自定义 4.编辑-添加-输入对象名称来选择-输入“LOCAL SERVICE”-确定 5.返回之后,注意勾选下面的本地启动和本地激活(注意,默认...

钢城区17850624782: win10系统遇到windows功能应用打不开该怎么办 -
宇璧中华: 1;2、如果Windows Modules Installer服务被禁用.msc)- 确定或回车;3,查看是否被禁用、开始 - 运行(输入services,打开:服务(本地),再安装应用程序,重启计算机、在服务(本地)窗口找到,必须把它更改为启用 - 手动:Windows Modules Installer服务

钢城区17850624782: Windows 无法打开“添加打印机”本地打印后台处理程序服务没有运行.请重新启动打印后台处理程序 -
宇璧中华: 估计是你用360优化把服务禁用了, 可以在360卫士-优化加速-系统关键服务中和共享有关的服务都打开 不行的话依次打开我的电脑属性---管理----服务和应用程序--服务---找到Print Spooler右键启动

钢城区17850624782: 我家电脑的Windows Installer无法启动了,怎么办??? -
宇璧中华: 无法启动windows installer解决办法(错误997)无法启动windows installer解决办法 Deep Rising English kenny128 (2006-01-10日 23:42) 在本地计算机无法启动windows installer服务.错误997:重叠I/O操作进行中 解决办法: 1. 单击“开始”,...

钢城区17850624782: win10系统服务管理器无法打开怎么办 -
宇璧中华: 具体方法如下: 1、单击开始菜单,依次点击所有应用→Windows系统→运行,或者快捷键:win+R键,打开运行,在输入框中输入:services.msc,确定打开;2、单击开始菜单,点开所有应用,找到Windows管理工具,展开Windows管理工具,找到服务,并单击点开;3、在开始菜单上鼠标右键,点击计算机管理,在左上角左边栏中的服务和应用程序中单击服务即可打开服务管理器;4、在Win10开始菜单底部的搜索框中搜索“服务”,然后点击搜索结果顶部的“服务”或“查看本地服务”均可打开服务管理器.5、打开可控制面板,查看方式选择大图标,点击管理工具,找到服务,单击打开,即可打开服务管理器.

钢城区17850624782: WIN7右下角自定义打不开 点击没反映 怎么办 -
宇璧中华: 如果开机时是这样的,因为开机时正在加载程序,稍等会在操作试试.如果是平时这样的也是你的电脑卡引起的吧?重启一下电脑或用任务管理器,看看下面的方法,有问题追问我.打开任务管理器将进程“explorer”结束,这时桌面图标和任务栏全无.在打开任务管理器(按下“Ctrl+Alt+Del”组合键即可打开),点击“文件”→“新建任务”,在打开的“创建新任务”对话框中输入“explorer”,单击“确定”按钮后,稍等一下就可以见到桌面图标了,你在看看怎样.

钢城区17850624782: 无法显示打印机属性,打印后台程序服务没有运行,,该怎么弄? -
宇璧中华: 当添加打印机或是使用打印机时,系统报错“打印后台程序服务没有运行”,一般会发生在 Windows 2000、XP、2003 系统下,出现此现象多是由于系统不稳定导致系统支持打印机的服务无法启用.该“打印后台程序服务”是 Windows 2000...

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 星空见康网