ハードなソフトの話

アクセスカウンタ

zoom RSS Windows の Java 実行環境で jjs.exeの場所を探して起動

<<   作成日時 : 2017/03/24 00:04   >>

ブログ気持玉 0 / トラックバック 0 / コメント 0

WindowsにJavaの実行環境をインストールするとPATHにJava.exeが設定される。

しかし、jjs.exe はPATHに設定されない。そこで、自動的にjjs.exeの場所を探して実行するバッチファイルを作成した。

ファイル名: run_jjs.bat



@echo off 
setlocal EnableDelayedExpansion
set regkey64="HKLM\SOFTWARE\JavaSoft\Java Runtime Environment" 
set regkey32="HKLM\SOFTWARE\WOW6432Node\JavaSoft\Java Runtime Environment"

rem 現在の環境のJavaのバージョンを調べる 
set regkey=!regkey64!
call :get_currentVersion !regkey!
rem Java のバージョンを取得できたか? 
if "!currentVersion!"=="" ( 
    rem 32bit環境のJavaのバージョンを調べる 
    set regkey=!regkey32!
    call :get_currentVersion !regkey! !currentVersion!
    if "!currentVersion!"=="" ( 
rem Javaのバージョン取得に失敗 
echo Javaのバージョンが不明です 
exit /b 1 
    ) 
)
rem JavaHomeを取得 
call :get_javaHome !regkey! !currentVersion!
if "!javaHome!"=="" ( 
    echo JavaHomeの取得に失敗しました 
    exit /b 1 
)
rem jjsのパスを取得 
call :get_jjspath !javaHome! 
if not exist !jjspath! ( 
    echo jjs.exe が見つかりません 
    exit /b 1 
)
rem jjs を実行 
"!jjspath!" %* 
endlocal 
goto :eof

rem --------------------
rem Javaのバージョンを取得 
:get_currentVersion 
set keyname="CurrentVersion" 
reg query %1 /v %keyname% >nul 2>&1
if errorlevel 1 goto :eof
for /f "tokens=3*" %%f in ( 
   'reg query %1 /v %keyname% ^| find /i !keyname!'
) do ( 
    set currentVersion=%%f 

goto :eof

rem JavaHomeを取得 
:get_javaHome 
set keyname="JavaHome" 
reg query "%~1\%~2" /v %keyname% >nul 2>&1
if errorlevel 1 goto :eof
for /f "tokens=1* delims=:" %%f in ( 
   'reg query "%~1\%~2" ^| find /i !keyname! ' 
) do ( 
    set left=%%f
    set right=%%g
    set javaHome="!left:~-1!:!right!\" 

goto :eof

rem jjs.exe のパスを取得 
:get_jjspath 
set jjspath=%~1bin\jjs.exe 
goto :eof


このバッチファイルに -v を指定して実行すると下記のようになる:

image

思ったより対策になった。処理概要はざっくりとこんな感じ:

  1. レジストリから現在の Javaバージョンを取得する
    call :get_currentVersion !regkey64!
  2. 取得できない場合、64ビット環境なら32ビット版のJavaバージョンを取得する
    call :get_currentVersion !regkey32!
  3. Java バージョンが取得できなっかたらエラーで終了する
    exit /b 1
  4. Javaバージョンを元にレジストリから JavaHome (Javaのパス)を取得する
    call :get_javaHome !regkey! !currentVersion!
  5. jjs.exeのパスを取得する (javaHomeに “bin\jjs.exe”を結合する)
    call :get_jjspath !javaHome!
  6. コマンド引数を渡して jjs.exeを実行する
    !jjspath! %*

これで心置きなく JavaScriptをたくさん書けそうだ。

テーマ

関連テーマ 一覧


月別リンク

ブログ気持玉

クリックして気持ちを伝えよう!
ログインしてクリックすれば、自分のブログへのリンクが付きます。
→ログインへ

トラックバック(0件)

タイトル (本文) ブログ名/日時

トラックバック用URL help


自分のブログにトラックバック記事作成(会員用) help

タイトル
本 文

コメント(0件)

内 容 ニックネーム/日時

コメントする help

ニックネーム
本 文
Windows の Java 実行環境で jjs.exeの場所を探して起動 ハードなソフトの話/BIGLOBEウェブリブログ
文字サイズ:       閉じる