当前位置: 移动技术网 > IT编程>网络>Dos/Bat > BAT批处理判断服务是否正常运行的方法(批处理命令综合应用)

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

2020年05月12日  | 移动技术网IT编程  | 我要评论

酒神阴阳冕,朝鲜打美国,贾立平 最强大脑

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

批处理(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批处理判断服务是否正常运行的方法(批处理命令综合应用),希望对大家有所帮助,也非常感谢大家对移动技术网网站的支持!

如对本文有疑问,请在下面进行留言讨论,广大热心网友会与你互动!! 点击进行留言回复

相关文章:

验证码:
移动技术网