先給大家普及下批處理的基本概念
批處理(Batch),也稱為批處理腳本。顧名思義,批處理就是對某對象進行批量的處理,通常被認為是一種簡化的腳本語言,它應用于DOS和Windows系統中。批處理文件的擴展名為bat 或cmd。目前比較常見的批處理包含兩類:DOS批處理和PS批處理。PS批處理是基于強大的圖片編輯軟件Photoshop的,用來批量處理圖片的腳本;而DOS批處理則是基于DOS命令的,用來自動地批量地執行DOS命令以實現特定操作的腳本。更復雜的情況,需要使用if、for、goto等命令控制程式的運行過程,如同C、Basic等高級語言一樣。如果需要實現更復雜的應用,利用外部程式是必要的,這包括系統本身提供的外部命令和第三方提供的工具或者軟件。批處理程序雖然是在命令行環境中運行,但不僅僅能使用命令行軟件,任何當前系統下可運行的程序都可以放在批處理文件中運行。
前言
某qlik sense服務器需要一個health check(健康狀態監測)的程序,所以就有了一下的批處理腳本。
大致功能如下:
@echo offcolor 2Eset YYYYmmdd=%date:~0,4%%date:~5,2%%date:~8,2%set hhmiss=%time:~0,2%%time:~3,2%%time:~6,2%set filename=healthcheck.logREM set "filename=healthcheck_%YYYYmmdd%_%hhmiss%.log"set "datetime=%YYYYmmdd%%hhmiss%"set allCount=0set errorCount=0set checkList="QlikSenseServiceDispatcher" "QlikSenseSchedulerService" "QlikSenseRepositoryService" "QlikSenseRepositoryDatabase" "QlikSenseProxyService" "QlikSensePrintingService" "QlikSenseEngineService" "QlikLoggingService"echo ============================================ >%filename%echo Health Checking by Qlik Team >>%filename%echo zhengkai.blog.csdn.netecho (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_checksc query |find /i %1 >nul 2>nulif not errorlevel 1 ( echo SUCCESS...... %1 >>%filename%)else ( echo FAILD...... %1 is error ! >>%filename% set /a errorCount+=1)set /a allCount+=1goto:eof:check_statusif %errorCount% gtr 0 ( echo ###### this server is Not Health >>%filename%) else ( echo ###### this server is Health >>%filename%)goto:eof:endcopy %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會后,就可以開始使用
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_statusif %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=0for %%L in (%checkList%) do set /a allCount+=1
批處理copy復制文件
copy %filename% "http://xxxx/DataShare/CSDN/ZhengKai/"
批處理大于、小于、等于、不小于、不大于和不等于
if %errorCount% gtr 0 ( echo ###### this server is Not Health >>%filename%) else ( echo ###### this server is Health >>%filename%)
總結
以上所述是小編給大家介紹的BAT批處理判斷服務是否正常運行的方法(批處理命令綜合應用),希望對大家有所幫助,也非常感謝大家對武林網網站的支持!
新聞熱點
疑難解答