BAT批处理判断服务是否正常运行的方法(批处理命令综合应用)

先给大家普及下批处理的基本概念

批处理(Batch),也称为批处理脚本。顾名思义,批处理就是对某对象进行批量的处理,通常被认为是一种简化的脚本语言,它应用于DOS和Windows系统中。批处理文件的扩展名为bat 或cmd。目前比较常见的批处理包含两类:DOS批处理和PS批处理。PS批处理是基于强大的图片编辑软件Photoshop的,用来批量处理图片的脚本;而DOS批处理则是基于DOS命令的,用来自动地批量地执行DOS命令以实现特定操作的脚本。更复杂的情况,需要使用if、for、goto等命令控制程式的运行过程,如同C、Basic等高级语言一样。如果需要实现更复杂的应用,利用外部程式是必要的,这包括系统本身提供的外部命令和第三方提供的工具或者软件。批处理程序虽然是在命令行环境中运行,但不仅仅能使用命令行软件,任何当前系统下可运行的程序都可以放在批处理文件中运行。

前言

某qlik sense服务器需要一个health check(健康状态监测)的程序,所以就有了一下的批处理脚本。

大致功能如下:

  • 批处理获取当前日期时间
  • 批处理生成动态的文件名
  • 批处理输出echo到日志文件
  • 批处理遍历列表list
  • 批处理函数与call函数
  • 判断服务是否运行中
  • 批处理count计数
  • 批处理copy复制文件
  • 批处理判断大于gtr(记住那辆跑车名,批处理大于、小于、等于、不小于、不大于和不等于)
@echo off
color 2E
set YYYYmmdd=%date:~0,4%%date:~5,2%%date:~8,2%
set hhmiss=%time:~0,2%%time:~3,2%%time:~6,2%
set filename=healthcheck.log
REM set "filename=healthcheck_%YYYYmmdd%_%hhmiss%.log"
set "datetime=%YYYYmmdd%%hhmiss%"
set allCount=0
set errorCount=0
set checkList="QlikSenseServiceDispatcher" "QlikSenseSchedulerService" "QlikSenseRepositoryService" "QlikSenseRepositoryDatabase" "QlikSenseProxyService" "QlikSensePrintingService" "QlikSenseEngineService" "QlikLoggingService"
echo ============================================ >%filename%
echo Health Checking by Qlik Team         >>%filename%
echo zhengkai.blog.csdn.net
echo (datetime: %datetime% )            >>%filename%
echo ============================================ >>%filename%
echo.                       >>%filename%
echo.                       >>%filename%
for %%L in (%checkList%) do call :health_check %%L
echo ============================================ >>%filename%
echo Checking Finish.               >>%filename%
echo.                       >>%filename%
echo Error : %errorCount% of %allCount%      >>%filename%
echo.                       >>%filename%
echo ============================================ >>%filename%
call :check_status
echo ============================================ >>%filename%
goto:end

:health_check
sc query |find /i %1 >nul 2>nul
if not errorlevel 1 (
 echo SUCCESS...... %1             >>%filename%
)else (
 echo FAILD...... %1 is error !         >>%filename%
 set /a errorCount+=1
)
set /a allCount+=1
goto:eof

:check_status
if %errorCount% gtr 0 (
 echo ###### this server is Not Health     >>%filename%
) else (
 echo ###### this server is Health       >>%filename%
)
goto:eof

:end
copy %filename% \\xxxx\DataShare\CSDN\ZhengKai\

批处理获取当前日期时间,生成动态的文件名

set YYYYmmdd=%date:~0,4%%date:~5,2%%date:~8,2%
set hhmiss=%time:~0,2%%time:~3,2%%time:~6,2%
set "filename=healthcheck_%YYYYmmdd%_%hhmiss%.log"
echo %filename%

批处理输出echo到日志文件

  • > 就是清空输出文件,重新输出层
  • >> 就是追加到日子和文件
echo ============================================ >%filename%
echo Health Checking by Qlik Team         >>%filename%
echo ============================================ >>%filename%

批处理遍历列表list

定义在一个List会后,就可以开始使用

  • for %%L 用什么变量来遍历
  • in (%checkList%) 遍历哪个数组
  • do echo %%L 遍历来做什么
set checkList="QlikSenseServiceDispatcher" "QlikSenseSchedulerService" "QlikSenseRepositoryService" "QlikSenseRepositoryDatabase" "QlikSenseProxyService" "QlikSensePrintingService" "QlikSenseEngineService" "QlikLoggingService"
echo ============================================ >%filename%
echo Health Checking List             >>%filename%
for %%L in (%checkList%) do echo %%L
echo ============================================ >>%filename%

批处理函数与call函数

定义一个:function_name,中间是函数内容,后面以goto:eof结尾

call :check_status

:check_status
if %errorCount% gtr 0 (
 echo ###### this server is Not Health     >>%filename%
) else (
 echo ###### this server is Health       >>%filename%
)
goto:eof

批处理count计数

计数加一 set /a allCount+=1

set allCount=0
for %%L in (%checkList%) do set /a allCount+=1

批处理copy复制文件

  • 复制文件 copy 文件名 目录页
  • 复制文件夹用xcopy,指定的目录连文件和目录结构一并拷贝

copy %filename% "\\xxxx\DataShare\CSDN\ZhengKai\"

批处理大于、小于、等于、不小于、不大于和不等于

  • EQU - 等于
  • NEQ - 不等于
  • LSS - 小于
  • LEQ - 小于或等于
  • GTR - 大于
  • GEQ - 大于或等于
if %errorCount% gtr 0 (
 echo ###### this server is Not Health     >>%filename%
) else (
 echo ###### this server is Health       >>%filename%
)

总结

以上所述是小编给大家介绍的BAT批处理判断服务是否正常运行的方法(批处理命令综合应用),希望对大家有所帮助,也非常感谢大家对我们网站的支持!

(0)

相关推荐

  • bat 批处理 for 命令快速入门

    格式:FOR [参数] %%变量名 IN (相关文件或命令) DO 执行的命令 作用:对一个或一组文件,字符串或命令结果中的每一个对象执行特定命令,达到我们想要的结果. 注意:在批处理文件中使用 FOR 命令时,指定变量请使用 %%variable,而不要用 %variable.变量名称是区分大小写的,所以 %i 不同于 %I. 关于:for命令可以带参数或不带参数,带参数时支持以下参数:/d /l /r /f 下面分别解释一下 零:无参数时: --- FOR %variable IN (set

  • BAT 批处理脚本教程(详细篇脚本之家补充)

    第一章 批处理基础 第一节 常用批处理内部命令简介 批处理定义:顾名思义,批处理文件是将一系列命令按一定的顺序集合为一个可执行的文本文件,其扩展名为BAT或者CMD.这些命令统称批处理命令. 小知识:可以在键盘上按下Ctrl+C组合键来强行终止一个批处理的执行过程. 了解了大概意思后,我们正式开始学习.先看一个简单的例子! @echo off echo "欢迎来到我们!" pause 把上面的3条命令保存为文件test.bat或者test.cmd然后执行, 他就会在屏幕上显示以下二行话

  • 修改Windows Server 2008 R2 的3389远程端口的Bat批处理代码

    功能就是通过批处理实现修win2008 r2服务器远程端口为6637并加入到防火墙中 @ ECHO OFF color 0A ECHO ---------------------------------------------------------------------------- ECHO. ECHO 版权所有 copyright of 冰川网络 ECHO. ECHO ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

  • 批处理统计文件夹内的所有文件的数量和总大小的bat

    我最近电脑不知道为什么磁盘空间会慢慢的变小,而且过一段时间之后,又会有两三GB的空间被释放出来,使用我想监控下,看看是那个文件夹下产生的文件来占用我的存储空间,我想按层监视,最终找出原因. 从网上找个命令行显示指定文件夹目录的大小的批处理程序,但是发现并不太尽人意,总感觉不是很适合我的使用: 第一个程序,可以显示某个文件夹下的文件大小,但是我想按层显示,却不能满足我的要求,程序如下: @echo off echo. set /p dirPath=please input folder path:

  • Windows下使用批处理文件.bat删除旧文件

    本文教大家写一个批处理文件.bat删除旧文件,供大家参考,具体内容如下 1. 批处理文件 del_old_file.bat rem 删除D:\temp目录下7天前的文件 Forfiles /p D:\temp /s /d -7 /m *.* /c "cmd /c del /q /f @path" rem 删除C:\inetpub\logs目录下14天前的文件 Forfiles /p C:\inetpub\logs /s /d -14 /m *.* /c "cmd /c del

  • 利用bat批处理程序通过DOS命令行删除所有的空文件夹的方法

    用过gothub或者码云的同学都知道,不包含任何文件的空文件夹上传提交时不被允许的.当然你可以在空文件下创建.keep文件(或.gitkeep文件),然后就可以上传了. 但是如果空文件夹比较多,并且我们确实不需要这些空文件了,那本文就学习一种命令行删除所有空文件夹的方法.并封装成.bat批处理程序.通过鼠标右键运行即可. 一,DOS删除命令 1.1,删除文件命令 del 若是想删除文件,输入del 盘符名:\文件名,比如,我想删除一个在F盘的名为123.txt的文件,则输入  del f:\12

  • BAT批处理判断服务是否正常运行的方法(批处理命令综合应用)

    先给大家普及下批处理的基本概念 批处理(Batch),也称为批处理脚本.顾名思义,批处理就是对某对象进行批量的处理,通常被认为是一种简化的脚本语言,它应用于DOS和Windows系统中.批处理文件的扩展名为bat 或cmd.目前比较常见的批处理包含两类:DOS批处理和PS批处理.PS批处理是基于强大的图片编辑软件Photoshop的,用来批量处理图片的脚本:而DOS批处理则是基于DOS命令的,用来自动地批量地执行DOS命令以实现特定操作的脚本.更复杂的情况,需要使用if.for.goto等命令控

  • windows bat批处理判断电脑服务是否运行的问题

    我用来判断我的mysql是否运行: 代码: set srvname="MySQL57" sc query|find %srvname% && net stop %srvname% && pause || net start %srvname% && pause 结果:当他没运行时: 当他运行时: Bat命令学习-批处理中的&.&&.|.||.>.>>符号& 顺序执行多条命令,而不管命令是否

  • bat命令批处理判断32位还是64位系统的多种方法

    第一种代码:通过 %PROCESSOR_ARCHITECTURE% 可以通过cmd中 通过echo %PROCESSOR_ARCHITECTURE% if "%PROCESSOR_ARCHITECTURE%"=="x86" goto x86 if "%PROCESSOR_ARCHITECTURE%"=="AMD64" goto x64 exit :x64 explorer.exe http://www.baidu.com/ e

  • Windows server利用批处理脚本判断端口启动tomcat的方法

    win server服务器上面的tomcat老是不定时挂掉, 于是利用定时操作脚本判断tomcat80端口是否在运行, 如果运行则放过, 如果down掉就启动tomcat,解决tomcat不定时挂掉导致业务数据流通丢失问题.不扯淡, 上脚本. 1.给tomcat赋予环境变量 变量名:CATALINA_HOME 路径:C:\Program Files\Java\apache-tomcat-8.0.35 2.批处理脚本(startTomcat.bat) ::Final interpretation

  • Windows命令行bat批处理延迟sleep方法(批处理延时)

    Windows下批处理文件没有像Linux一样的Sleep函数进行延时处理,这里有2种较为实用的方法实现延迟: 1.使用WScirpt的sleep功能,精度0.001秒 创建vbs延迟文件,然后在批处理文件中调用,使用WScript的 sleep函数,实现sleep的效果. 实战: 1)创建文件sleep.vbs: echo WScript.sleep 5000 > sleep.vbs sleep.vbs 内容如下: WScript.sleep 5000. 2)在批处理文件中调用,创建示例文件t

  • 批处理判断第一个硬盘的最后一个分区并进入的bat代码

    下面的代码是比较完美的 @echo off echo 批处理初始工作目录为%cd%,开始切换... for /f "tokens=3 delims==" %%i in ('Wmic Path Win32_LogicalDiskToPartition^|find /i "Disk #0"') do call :check %%i echo. cd /d %B% echo 工作目录已切换至%cd%,任意键退出... pause>nul exit :check if

  • springcloud 服务降级的实现方法

    1 .简介 什么是服务降级?当服务器压力剧增的情况下,根据实际业务情况及流量,对一些服务和页面有策略的不处理或换种简单的方式处理,从而释放服务器资源以保证核心交易正常运作或高效运作. 如果还是不理解,那么可以举个例子:假如目前有很多人想要给我付钱,但我的服务器除了正在运行支付的服务之外,还有一些其它的服务在运行,比如搜索.定时任务和详情等等.然而这些不重要的服务就占用了JVM的不少内存与CPU资源,为了能把钱都收下来(钱才是目标),我设计了一个动态开关,把这些不重要的服务直接在最外层拒掉,这样处

  • java调用WebService服务的四种方法总结

    目录 一.前言 二.简介   三.具体解析 第一种方式,首先得下载axis2的jar包,Axis2提供了一个wsdl2java.bat命令可以根据WSDL文件自动产生调用WebService的代码. 第二种RPC 方式,强烈推荐. 第三种:利用HttpURLConnection拼接和解析报文进行调用. 第四种,利用httpclient 总结 一.前言 本来不想写这个的,因为网上类似的是在是太多了.但是想想自己前面段时间用过,而且以后可能再也没机会用了.所以还是记录一下吧.我这儿是以C语言生成的W

  • python中readline判断文件读取结束的方法

    本文实例讲述了python中readline判断文件读取结束的方法.分享给大家供大家参考.具体分析如下: 大家知道,python中按行读取文件可以使用readline函数,下面现介绍一个按行遍历读取文件的方法,通过这个方法,展开我们要讨论的问题: 复制代码 代码如下: filename = raw_input('Enter your file name')  #输入要遍历读取的文件路径及文件名 file = open(filename,'r') done = 0 while not  done:

  • Ping服务的php实现方法,让网站快速被收录

    这篇文章继续说说这个ping服务的问题,首先归纳和总结以下资料: [1]手动Ping服务地址: Baidu(百度)地址: http://ping.baidu.com/ping.html Google(谷歌)地址:http://blogsearch.google.com/ping Feedsky(飞递)地址:http://ping.feedsky.com/ping.html Qihoo(奇虎)地址:http://so.blog.qihoo.com/pingblog.html IASK(爱问)地址:

随机推荐