環境変数を設定するバッチファイル(自身を書き換える)


きっかけ

Bitnami Redmineをインストールすると、インストール先にuse_redmine.batというバッチファイルが出来る。これを起動すると、Ruby関連の環境変数が設定された状態でプロンプトが起動する。便利じゃんと思ったので、自分の業務用にも作った。

業務ではJava/Mavenを使うことが多い。担当する業務ごとに JavaランタイムやM2のインストールパスが異なることがある。開発者によっても使っているバージョンが異なる場合もある。コマンドプロンプトを起動して環境設定するのが面倒なので、設定を1回で済ませるバッチプログラム(バッチファイル自身を書き換える)を書いた。

バッチの流れ

  1. プロンプトを起動すると以前に設定した環境変数を読み込む(初回起動時はブランクになる)
  2. 設定がブランクな環境変数の設定を促して、当該ファイルの末尾に設定を追加する
  3. 改めて設定した環境変数を読み込む
  4. PATHを設定して、新たなプロンプトを開始する

書いたバッチ

@echo off
rem Load pre configured setting.
call :SET_PATH

if not exist "%JAVA_HOME%" (
  call :INPUT_JAVA
)
if not exist "%M2_HOME%" (
  call :INPUT_M2
)
rem Load configured setting.
call :SET_PATH
set path=%JAVA_HOME%\bin;%M2_HOME%\bin;%path%

rem Start new prompt in current folder.
cd /d "%~dp0"
start color F0 ^& echo JAVA_HOME=%JAVA_HOME% ^& echo M2_HOME=%M2_HOME%  ^& echo. ^& %mvn -version

exit /b
rem --------------------------------------------------
:INPUT_JAVA

set JAVA_INSTALL_DIR=
echo Input java install directory path.
set /P JAVA_INSTALL_DIR=

if not exist "%JAVA_INSTALL_DIR%" (
    echo The path is not exist.
    pause
    exit
)

echo set JAVA_HOME=%JAVA_INSTALL_DIR%>>"%~dp0%~nx0"

exit /b

rem --------------------------------------------------
:INPUT_M2

set MAVEN_INSTALL_DIR=
echo Input maven install directory path.
set /P MAVEN_INSTALL_DIR=

if not exist "%MAVEN_INSTALL_DIR%" (
    echo The path is not exist.
    pause
    exit
)

echo set M2_HOME=%MAVEN_INSTALL_DIR%>>"%~dp0%~nx0"

exit /b

rem ------------------------------------------------------------
:SET_PATH
set JAVA_HOME=
set M2_HOME=

rem User settings are written bellow.

実行例

最初に起動したバッチプロンプト(2回目以降は入力を求められない)

Input java install directory path.
C:\ProjectX\pleiades\java\8
Input maven install directory path.
C:\ProjectX\bin\apache-maven-3.5.2

次に起動するバッチプロンプト

JAVA_HOME=C:\ProjectX\pleiades\java\8
M2_HOME=C:\ProjectX\bin\apache-maven-3.5.2

Apache Maven 3.5.2 (138edd61fd100ec658bfa2d307c43b76940a5d7d; 2017-10-18T16:58:13+09:00)
Maven home: C:\ProjectX\bin\apache-maven-3.5.2\bin\..
Java version: 1.8.0_202, vendor: Oracle Corporation
Java home: C:\ProjectX\pleiades\java\8\jre
Default locale: ja_JP, platform encoding: MS932
OS name: "windows 10", version: "10.0", arch: "amd64", family: "windows"

C:\ProjectX>