Windows TIPS
[Scripting] |
WSHで環境変数を設定する
|
 |
■ |
組織内では、環境変数を統一して設定しておくことで、コマンド・プロンプトでの作業などで環境の違いによるトラブルを未然に防ぐことができる。 |
■ |
WSHを利用すれば、環境変数の設定に必要な情報をあらかじめ用意しておくだけで、ワンクリックで一連の環境変数を設定できる。 |
|
|
環境変数とは、任意のアプリケーションやシステムから参照することができる文字列変数のことだ。代表的な環境変数としては、プログラム起動時の検索先フォルダを表すPATHなどがある。このPATHに例えば「C:\j2se\bin」と設定しておくことで、「C:\j2se\bin\java.exe」をコマンド・プロンプトから呼び出す場合にも、「java.exe」と指定するだけで済むようになる。これは、コマンド・プロンプトがアプリケーションを呼び出す際に、環境変数PATHで指定されたディレクトリを自動的に検索し、該当するファイルが存在しないかどうかを確認しているためだ。
この環境変数は、コマンド・プロンプトがメインであったMS-DOSの時代には何かと中心的な役割を果たしてきたが、GUIがメインのWindows環境になって、やや影が薄れた感がある。しかし環境変数がすでに過去のものであるかというと、決してそうではない。特に、ごく原始的なテキスト・エディタでコーディング開発を行っている現場などでは、コマンド・プロンプトは手放せないツールだろう。
そのような環境で、必要な環境変数を統一して設定しておくことは大変重要だ。環境変数の設定によっては、用意したバッチ・ファイルが正常に動作しないとか、コンパイル処理が正常にできないというようなことも起こりうるからだ。環境変数をあらかじめ組織内で統一しておくことで、不用意なトラブルを未然に防ぐことができるし、メンバーに作業マニュアルなどを配布する場合にも、一律な環境を想定して手順を記述できるのは何かと便利だろう。
本稿では、WSH(Windows Scripting Hosts)を利用することで、あらかじめ設定された情報に従って、環境変数を自動設定する方法を紹介する。これによって、組織内で一律な環境を構築することも容易となるし、環境変数に変更があった場合にも設定ファイルを変更するだけで各環境に一律に再適用することができる。
手順1―テキスト・エディタでスクリプトのコードを入力する
まずはテキスト・エディタ(メモ帳でも何でもよい)を開き、以下のコードを入力してenvironment.wsfというファイルを作成してほしい。ただし引用符(')で始まる行はコードの意味を解説するためのコメント部分なので、省略してもよい。
※ファイルenvironment.wsf
<?xml version="1.0" encoding="Shift_JIS" standalone="yes" ?>
<package>
<job id="environment">
<?job error="true" debug="true" ?>
<object id="objFs" progid="Scripting.FileSystemObject" />
<script language="VBScript">
<![CDATA[
Set WshShell=WScript.CreateObject("WScript.Shell")
' 環境変数の情報を管理するWshEnvironmentオブジェクトは、WshShellオブジェクトのEnvironmentプロパティを介して取得することができる。Environmentプロパティの引数には、環境変数の種類を指定する
Set WshEnvironment=WshShell.Environment("User")
' 設定したい環境変数の情報を示したenv.datを開き、1行単位で読み込む。env.datの中身は「環境変数名=値」の形式で記述されているので、あらかじめSplit関数で名前と値に分割しておく
Set objTs=objFs.OpenTextFile("env.dat",1,True)
Do While Not objTs.AtEndOfStream
aryDat=Split(objTs.readLine,"=")
' 環境変数名がPathである場合には、既存の値を消去しないように、既存の値の末尾にセミコロン(;)区切りで新しい値を連結する。既存の値を取得するには、ExpandEnvironmentStringsプロパティで「%環境変数名%」を指定すればよい。
' 環境変数名がPath以外である場合には、そのままenv.datで設定された内容で環境変数を更新する
If aryDat(0)="Path" Then
WshEnvironment.Item(aryDat(0))=WshShell.ExpandEnvironmentStrings("%Path%") & ";" & aryDat(1)
Else
WshEnvironment.Item(aryDat(0))=aryDat(1)
End If
Loop
WScript.Echo "環境変数を設定しました"
]]>
</script>
</job>
</package> |
- サンプル・ファイルのダウンロード
(注:サンプルenvironment.wsfを実行するには、上のサンプル・ファイルを右クリックしてenvironment.wsfというファイル名で保存する)
WSHの実行ファイルは拡張子「.wsf」(Windows Scripting host File)とする必要がある。ファイル名自体は何でもよいが、ここでは「environment.wsf」という名前で保存しておこう。
手順2―WSHのコードを実行する
environment.wsfを実行するには、エクスプローラなどからenvironment.wsfをダブルクリックするだけだ。実行結果は、Windows 2000ならばコントロール・パネルの[システム]-[詳細]-[環境変数]から確認することができるし、コマンド・プロンプト上でsetコマンドを実行してもよい。
 |
environment.wsfの実行結果 |
Windows 2000ならば、コントロール・パネルの[システム]から[詳細]-[環境変数]で、現在の環境変数の設定を参照/変更することができる。 |
|
 |
追加された環境変数の例。 |
|
env.datの例としては、例えば次のようなものを用意し、これをenvironment.wsfと同一のフォルダに保存しておく。ここではAPACHE_HOME、TOMCAT_HOME、PATHという3つの環境変数を設定している。
※ファイルenv.dat
APACHE_HOME=C:\Apache2
TOMCAT_HOME=C:\Jakarta-Tomcat5
PATH=C:\Apache2
|
- サンプル・データ・ファイルのダウンロード
(注:データ・ファイルを保存するには、上のリンクを右クリックして、environment.wsfと同一のフォルダ内にenv.datとして保存しておくこと。ファイルの各行には、「環境変数名=値」の形式で設定情報を入力する。ただし、キー名、値ともに「=」を含めることはできないので注意すること。)
Windows環境であらかじめ用意されている環境変数の一覧については、以下のサイトでも参照することができる。
なお、以上の例ではローカルのハードディスク上にWSHスクリプト・ファイルやデータ・ファイルを作成したが、必要ならばこれらをファイル・サーバ上に用意し、直接実行することも可能である。これならば、各マシンにログオンした後、このスクリプトを最初に1回実行するだけで、必要な環境変数が作成される。ログオン時に必要な共有フォルダへの設定を行う方法は、Windows TIPS「WSHでログオン時に共有フォルダを設定する」で紹介しているので、併せて参照してほしい。
環境変数の種類
以上の例では、WshShell.Environmentプロパティを介して「User」という(ログオン・ユーザー固有の)環境変数を設定しているが、ほかにも以下のような環境変数の種類を設定することができる。
種類 |
概要 |
SYSTEM |
システム環境変数。全ユーザーに適用 |
USER |
ユーザー環境変数。ログオン・ユーザーごとに適用 |
PROCESS |
プロセス環境変数。現在有効な全環境変数(読み込み専用) |
VOLATILE |
一時環境変数。ログオフと同時に破棄される一時的な環境変数 |
 |
環境変数の種類 |
環境変数には、定義されている場所(存在場所)に応じてこれらの種類がある(大文字/小文字は区別されない)。 |
Environmentプロパティにおいて、もしもこれらの「種類」を省略した場合には、Windows 9x/MeではPROCESSが、それ以外のOSではSYSTEMであると見なされる。ただしWindows 9x/MeではPROCESS以外は指定できないので注意すること。
Windows Server Insider フォーラム 新着記事