1. ホーム
  2. スクリプト・コラム
  3. DOS/BAT(ドス・バット

サービスが正常に稼働しているかどうかを判断するためのBATバッチ処理(バッチ処理コマンド総合アプリ)

2022-01-02 17:54:20

まず、バッチ処理の基本的な考え方について紹介します。

バッチ(Batch)とは、バッチスクリプトとも呼ばれる。バッチ処理とはその名の通り、対象を一括して処理することであり、DOSやWindowsシステムで使用される簡易スクリプト言語とされることが多い。バッチファイルの拡張子はbatまたはcmdで、バッチスクリプトには一般的に2つのタイプがある。強力な写真編集ソフト「Photoshop」をベースにした「DOSバッチスクリプト」と、DOSコマンドをベースに、特定の操作を実現するためにDOSコマンドを一括して実行する「PSバッチスクリプト」である。さらに複雑な場合には、C言語やBasicなどの高級言語のように、if、for、gotoなどのコマンドを使用してプログラムの実行処理を制御する必要がある。より複雑なアプリケーションを実現する必要がある場合には、システム自身が提供する外部コマンドやサードパーティが提供するツールやソフトウェアなど、外部プログラムを活用する必要がある。バッチプログラムはコマンドライン環境で実行されるが、コマンドラインソフトウェア以外も利用でき、現在のシステムで実行可能なプログラムなら何でもバッチファイルに入れて実行することが可能である。

前置き

qlik senseのサーバーにはヘルスチェック(健康状態の監視)プログラムが必要なので、そのバッチスクリプトを紹介します。

一般的な機能は以下の通りです。

  • 現在の日付と時刻を一括で取得する
  • 動的なファイル名の一括生成
  • ログファイルへのエコーの一括出力
  • 一括探索リスト
  • バッチ関数とコール関数
  • サービスが稼働しているかどうかの判断
  • バッチ数
  • ファイルの一括コピー
  • バッチは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" & quot;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% 


\\Ίταν ταν για


現在の日時を一括取得し、動的なファイル名を生成する

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 ============================================ >%filename%
echo Health Checking by Qlik Team >>%filename%
echo ============================================ >>%filename%

バッチトラバーサルのリスト

リストで定義すると

  • for %%L トラバースに使用する変数について
  • (%checkList%) で、どの配列を反復処理するか。
  • do echo %%L 何に対して反復処理を行うか。
set checkList="QlikSenseServiceDispatcher" "QlikSenseSchedulerService" "QlikSenseRepositoryService" "QlikSenseRepositoryService" " quot;QlikSenseRepositoryDatabase" "QlikSenseProxyService" "QlikSensePrintingService" " QlikSenseEngineService" "QlikLoggingService"
echo ============================================ >%filename%
echo Health Checking List >>%filename%
for %%L in (%checkList%) do echo %%L 
echo ============================================ >>%filename%

バッチ関数とコール関数

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

バッチ回数

カウントプラス1セット /a allCount+=1

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

ファイルの一括コピー

  • コピーファイル コピーファイル名 ディレクトリ ページ
  • xcopyでフォルダをコピーし、指定されたディレクトリをファイルとディレクトリ構造でコピーします。

コピー %filename% " \\Ίταν ταν για "

より大きい、より小さい、等しい、より小さくない、より大きくない、等しくないを一括して表示する。

  • 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バッチ処理の方法(バッチコマンド総合アプリ)をご紹介しましたが、皆様のお役に立てれば幸いです!また、BinaryDevelopのサイトを応援していただき、本当にありがとうございました。