忍者ブログ

◆当blogは、Linuxサーバ構築する際の実際の設定手順を個人的メモとして記載しております。LinuC試験の役に立つ情報があるかも…?

LinuC(Linux技術者認定資格)&リナックスサーバ構築設定事例

   

【BAT】service表示

@echo off
setlocal
REM ==========================
REM サービス表示名
set DISPLAY_NAME=
REM サービス名
set SERVICE_NAME=
REM サービスの起動状態
set SERVICE_STAT=
REM ==========================
set DISPLAY_NAME="Windows Time"
call :GET_SERVICE_NAME
call :GET_SERVICE_STAT
call :DISPLAY_STATUS
REM --------------------------
set DISPLAY_NAME="Windows Update"
call :GET_SERVICE_NAME
call :GET_SERVICE_STAT
call :DISPLAY_STATUS
REM --------------------------
set DISPLAY_NAME="Themes"
call :GET_SERVICE_NAME
call :GET_SERVICE_STAT
call :DISPLAY_STATUS
REM --------------------------
set DISPLAY_NAME="Windows Search"
call :GET_SERVICE_NAME
call :GET_SERVICE_STAT
call :DISPLAY_STATUS
REM --------------------------
goto END
REM ==========================
::: サービス表示名を元にサービス名を取得
:::
::: 必要な環境変数
:::  DISPLAY_NAME
::: 設定される環境変数
:::  SERVICE_NAME
:::
REM --------------------------
:GET_SERVICE_NAME
set SERVICE_NAME=
if not defined DISPLAY_NAME exit /b 1
set CMD=sc getkeyname %DISPLAY_NAME%
for /f "usebackq tokens=1,2,3" %%a in (`%CMD%`) do (
REM echo DEBUG: a=%%a b=%%b c=%%c
if "名前" == "%%a" (
set SERVICE_NAME=%%c
)
)
if not defined SERVICE_NAME (
REM サービス名が取得できなければエラー
echo ERROR: サービス名の取得に失敗しました(%DISPLAY_NAME%)
exit /b 1
)
exit /b 0
REM ==========================
::: サービス名からサービスの状態を取得
:::
::: 必要な環境変数
:::  SERVICE_NAME
::: 設定される環境変数
:::  SERVICE_STAT
:::
REM --------------------------
:GET_SERVICE_STAT
set SERVICE_STAT=
if not defined SERVICE_NAME exit /b 1
set CMD=sc query %SERVICE_NAME%
for /f "usebackq tokens=1,2,3,4" %%a in (`%CMD%`) do (
REM echo DEBUG: a=%%a b=%%b c=%%c d=%%d
if "STATE" == "%%a" (
set SERVICE_STAT=%%d
)
)
if not defined SERVICE_STAT (
REM 状態が取得できなければエラー
echo ERROR: サービスの状態取得に失敗しました(%SERVICE_NAME%)
exit /b 1
)
exit /b 0
REM ==========================
::: 取得したサービスの状態を表示
:::
::: 必要な環境変数
:::  DISPLAY_NAME
:::  SERVICE_STAT
::: 設定される環境変数
:::  なし
:::
REM --------------------------
:DISPLAY_STATUS
if not defined DISPLAY_NAME (
echo ERROR: サービス表示名が設定されていません
exit /b 1
)
REM カラーのため設定
for /f %%i in ('cmd /k prompt $e^<nul') do set ESC=%%i
if defined SERVICE_STAT (
REM %変数:~1,-1%は最初と最後の1文字を除いて展開する
if %SERVICE_STAT% == RUNNING (
REM 緑字
echo %DISPLAY_NAME:~1,-1% (%SERVICE_NAME%^) [%ESC%[92m%SERVICE_STAT%%ESC%[0m^]
) else (
REM 赤字
echo %DISPLAY_NAME:~1,-1% (%SERVICE_NAME%^) [%ESC%[91m%SERVICE_STAT%%ESC%[0m^]
)
) else (
REM %変数:~1,-1%は最初と最後の1文字を除いて展開する
echo %DISPLAY_NAME:~1,-1% ^(%SERVICE_NAME%^) ^[ UNKNOWN ^]
)
exit /b 0
REM ==========================
::: バッチ終了処理
REM --------------------------
:END
echo.
pause
REM --------------------------
endlocal
exit /b 0
PR

更新日付

03 2025/04 05
S M T W T F S
1 2 3 4 5
6 7 8 9 10 11 12
13 14 15 16 17 18 19
20 21 22 23 24 25 26
27 28 29 30

RECOMMEND

プロフィール

HN:
Account
HP:
性別:
非公開
職業:
--- NODATA ---
趣味:
--- NODATA ---
自己紹介:
◆当blogは、Linuxサーバ構築する際の実際の設定手順を個人的メモとして記載しております。LinuC試験の役に立つ情報があるかも…?

リンク

<<【RHEL】サブスク関連  | HOME |  【Shell Script】デバッグ>>
Copyright ©  -- LinuC(Linux技術者認定資格)&リナックスサーバ構築設定事例 --  All Rights Reserved
Design by CriCri / Photo by Melonenmann / powered by NINJA TOOLS / 忍者ブログ / [PR]