2017-06-12 10 views
0

私のクエリを見ていただきありがとうございます。 サービス名が「Tomcat8」のWindowsサービスとしてTomcatがインストールされています。 私はバッチファイルを介してWindowsサービスを照会してtomcatパスを取得したいと考えています。WindowsサービスからのTomcatパスをバッチファイルで見つけるには

WindowsサービスからTomcat8パスを取得する方法を教えてください。

私は何を試しましたか? 私はREGクエリに

コマンドを使用してのアプローチの下に試してみました:

reg query "HKLM\System\CurrentControlSet\Services\Tomcat8" /v "ImagePath" 

出力:

HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\Tomcat8 
ImagePath REG_EXPAND_SZ C:\apache-tomcat-8.5.15\bin\tomcat8.exe //RS// Tomcat8 

しかし、このコマンドは、絶対パスを与えていません。私はtomcatの絶対パスを取得したい(例:C:\ apache-tomcat-8.5.15)。その後、

reg queryコマンドの出力を取る
+0

...絶対パスは 'C:\ apache-tomcat-8.5.15 \ bin \ tomcat8.exe'です。その場所は 'C:\ apache-tomcat-8.5.15 \ bin'です。要件を明確にしてください。 – Compo

答えて

1
@ECHO OFF 
SETLOCAL 

FOR /f "delims=/" %%a IN ('reg query "HKLM\System\CurrentControlSet\Services\Tomcat8" /v "ImagePath"') DO (
FOR /f "tokens=1,2,*delims= " %%b IN ("%%a") DO IF "%%b"=="ImagePath" (
    FOR %%m IN ("%%~dpd.") DO ECHO %%~dpm 
) 
) 

GOTO :EOF 

、行(デフォルト)に非常に最初のトークンを取るが、それは//だから(そこに見える末尾のワッフルを削除する/delimsを設定し...

この場合も、スペースを区切り文字として使用し、1,2,..にそれぞれ1番目、2番目、および残りの行を選択します。重要な文字列を%%bに入れて、その行だけが処理されるようにします。 executable-filenameは%%dに表示されます。このドライブとパスを選択し、末尾に.をポップして、パーサーがファイル名としてbinと表示し、結果のドライブ&パスを選択します。

+0

ソリューションを使用して迅速に対応していただきありがとうございます。 –

0

reg queryコマンドラインは、Tomcat8実行可能ファイルへの絶対パスを返します。祖父母ディレクトリを取得したいと思うようです。これはヘッダをスキップした後、行全体を捕捉

for /F "skip=1 delims" %%R in (' 
    reg query "HKLM\System\CurrentControlSet\Services\Tomcat8" /V "ImagePath" 
') do set "RVAL=%%R" 

ImagePath REG_EXPAND_SZ C:\apache-tomcat-8.5.15\bin\tomcat8.exe //RS// Tomcat8 
まず

、我々はfor /Fループを使用して、req queryコマンドラインの出力をキャプチャするために必要

次に、先行する値の名前と型を4つの連続したスペースで区切って削除します、および末尾のものSPACE + //RS// + SPACE

set "RVAL=%RVAL:* =%" 
set "RVAL=%RVAL:* =%" 
set "RVAL=%RVAL: //RS// =" & rem "%" 

は今、私たちはディレクトリ階層に上がるたい\..何度でも追加してみましょう:最後に

set "RVAL=%RVAL%\..\.." 

を、パスを解決するには、forループが最適なツールです。

for %%R in ("%RVAL%") do set "RVAL=%%~fR" 

C:\apache-tomcat-8.5.15\bin\tomcat8.exe\..\..は機能的にはC:\apache-tomcat-8.5.15に等しいため、これは美容的なものです。

関連する問題