Windowsサービスがバッチファイルからインストールされているかどうかを確認する必要があります。必要に応じてバッチ以外のものに浸ることができますが、したくありません。これを行う方法はありますか?
これを試して:
@echo off
SC QUERY ftpsvc > NUL
IF ERRORLEVEL 1060 GOTO MISSING
ECHO EXISTS
GOTO END
:MISSING
ECHO SERVICE MISSING
:END
SC QUERY
コマンドは、表示名ではなく短いサービス名でクエリを実行することに注意してください。この名前は、ServiceManagerでサービスのプロパティの[全般]タブを確認することで見つけることができます。
「停止」などのコマンドではなく「クエリ」を使用する必要があります。「停止」はサービスが存在する場合に停止する可能性があるため、これは正しい方法ではありません。
@echo OFF
set _ServiceName=SomeServiceName
sc query %_ServiceName% | find "does not exist" >nul
if %ERRORLEVEL% EQU 0 echo Service Does Not Exist.
if %ERRORLEVEL% EQU 1 echo Service Exist.
どうですか:
sc interrogate "nameofyourservicehere"
tasklist
はサービスがインストールされているかどうかに関する情報を提供しないので、これは本当に便利だと思いました。 (または私は方法を見つけられませんでした)
これは、sc query
を使用してWindowsサービスがインストールされているかどうかを確認し、見つかった場合は停止する例です。
sc query | find /I "%tmpServiceName%" > nul
if not errorlevel 1 echo. && net stop %tmpServiceName%
if errorlevel 1 echo. - Windows service %tmpServiceName% is not running or doesn't exist.