先給大家普及下批處理的基本概念
批處理(Batch),也稱為批處理腳本。顧名思義,批處理就是對某對象進(jìn)行批量的處理,通常被認(rèn)為是一種簡化的腳本語言,它應(yīng)用于DOS和Windows系統(tǒng)中。批處理文件的擴(kuò)展名為bat 或cmd。目前比較常見的批處理包含兩類:DOS批處理和PS批處理。PS批處理是基于強(qiáng)大的圖片編輯軟件Photoshop的,用來批量處理圖片的腳本;而DOS批處理則是基于DOS命令的,用來自動地批量地執(zhí)行DOS命令以實(shí)現(xiàn)特定操作的腳本。更復(fù)雜的情況,需要使用if、for、goto等命令控制程式的運(yùn)行過程,如同C、Basic等高級語言一樣。如果需要實(shí)現(xiàn)更復(fù)雜的應(yīng)用,利用外部程式是必要的,這包括系統(tǒng)本身提供的外部命令和第三方提供的工具或者軟件。批處理程序雖然是在命令行環(huán)境中運(yùn)行,但不僅僅能使用命令行軟件,任何當(dāng)前系統(tǒng)下可運(yùn)行的程序都可以放在批處理文件中運(yùn)行。
前言
某qlik sense服務(wù)器需要一個(gè)health check(健康狀態(tài)監(jiān)測)的程序,所以就有了一下的批處理腳本。
大致功能如下:
- 批處理獲取當(dāng)前日期時(shí)間
- 批處理生成動態(tài)的文件名
- 批處理輸出echo到日志文件
- 批處理遍歷列表list
- 批處理函數(shù)與call函數(shù)
- 判斷服務(wù)是否運(yùn)行中
- 批處理count計(jì)數(shù)
- 批處理copy復(fù)制文件
- 批處理判斷大于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\
批處理獲取當(dāng)前日期時(shí)間,生成動態(tài)的文件名
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
定義在一個(gè)List會后,就可以開始使用
- for %%L 用什么變量來遍歷
- in (%checkList%) 遍歷哪個(gè)數(shù)組
- 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%
批處理函數(shù)與call函數(shù)
定義一個(gè):function_name,中間是函數(shù)內(nèi)容,后面以goto:eof結(jié)尾
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計(jì)數(shù)
計(jì)數(shù)加一 set /a allCount+=1
set allCount=0
for %%L in (%checkList%) do set /a allCount+=1
批處理copy復(fù)制文件
- 復(fù)制文件 copy 文件名 目錄頁
- 復(fù)制文件夾用xcopy,指定的目錄連文件和目錄結(jié)構(gòu)一并拷貝
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%
)
總結(jié)
以上所述是小編給大家介紹的BAT批處理判斷服務(wù)是否正常運(yùn)行的方法(批處理命令綜合應(yīng)用),希望對大家有所幫助,也非常感謝大家對腳本之家網(wǎng)站的支持!
您可能感興趣的文章:- BAT 批處理腳本教程(詳細(xì)篇腳本之家補(bǔ)充)
- Windows下使用批處理文件.bat刪除舊文件
- 利用bat批處理程序通過DOS命令行刪除所有的空文件夾的方法
- bat 批處理 for 命令快速入門
- 修改Windows Server 2008 R2 的3389遠(yuǎn)程端口的Bat批處理代碼
- 批處理統(tǒng)計(jì)文件夾內(nèi)的所有文件的數(shù)量和總大小的bat