MS-DOSプロンプト コマンドプロンプト |
set 名前=値 | 値が無いと、その名前の環境変数は削除される。 |
---|---|---|
sysedit | スタート→ファイル名を指定して実行⇒syseditを入力→autoexec.batを編集 | |
Windows2000 | スタート→設定→コントロールパネル⇒システム⇒詳細→環境変数 | |
WindowsXP | スタート→設定→コントロールパネル⇒システム⇒詳細設定→環境変数 |
環境変数名は、大文字小文字は無視されるので どちらで書いてもよい。
環境変数名の値には当然スペースを入れることが出来る。
環境変数名にもスペースを使うことは出来るのだが、変数名の先頭には使えない。(入れても削除される)
システムの詳細設定から設定した場合は、変数名の末尾にスペースを入れても削除される。
Windowsで設定している環境変数は、コマンドプロンプト内でも使える。[/2006-07-07]
が、コマンドプロンプト上で環境変数を変更しても そのコマンドプロンプト内で有効なだけであり、Windowsの他のアプリには影響を与えない。
値に指定された文字列が、環境変数にセットされる。
代入を表す「=
」の前後にスペースを入れると、そのスペースも環境変数名の一部、あるいは値の一部として扱われる。
>set abc=hoge >set abc = hoge >echo "%abc%" "hoge" >echo "%ABC%" ←大文字小文字は無関係 "hoge" >echo "%abc %" ←スペース付きの環境変数 " hoge"
「/a」オプションを付けると、値に計算式を指定することが出来る。環境変数には、計算された結果がセットされる。
オプションなしの場合はセットしても何も表示されないが、こちらの場合はセットされると共に結果が表示される。
>set /a test=1+2 3 >echo %test% 3 >set /a test=3 + 4 …スペースを入れてもOK 7 >set /a test= %test% * 2 …環境変数も使用可能 14 >set /a test=test + test2 …式以外は変数として扱われるので、実は環境変数も%でくくる必要がない。また、存在しない場合は0扱い 14 >set /a test="test * 2" …ダブルクォーテーションでくくってもOK 28 >set /a test+=2 …C言語系の演算子も使える 30
「/p」オプションを付けると、画面にプロンプトを表示し、値を入力することが出来る。入力した値が環境変数にセットされる。
>set /p test=値を入力して下さい: 値を入力して下さい:abc >echo %test% abc >set /p test= zzz >echo %test% zzz
既存の値の直後に新しい値を書くことで、環境変数に値を追加できる。
>set CLASSPATH=%PASSPATH%;C:\temp ←ディレクトリを追加する時は、たいていセミコロンで区切る
値を書かないと、環境変数が削除される。if文のdefinedが偽になる。
現在セットされている環境変数を全て表示する。
文字列を指定すると、その文字列で始まる環境変数を全て表示する。
>set bbb=hoge >set bcd=hage >set b bbb=hoge bcd=hage
>echo %名前% >cd %名前%\bin
つまり、名前を%で囲むと値に置換される。(UNIXでは、「$」から始めた名前が値となる)
文法 | 説明 | 例 | |
---|---|---|---|
%変数名% |
環境変数の値そのもの。 | ||
%変数名:置換前=置換後% |
環境変数の値の中で、置換前の文字列にマッチする部分を全て置換後の文字列に置き換える。 |
>set var=aaa.txt bbb.txt >echo %var:txt=bat% aaa.bat bbb.bat |
|
%変数名:~位置,長さ% |
環境変数の値の一部(副文字列)。 位置は0から始まる。また、全角文字も1文字として扱われる。 |
%変数名:~0,3% |
左3文字 |
%変数名:~-3% |
右3文字 | ||
%変数名:~2,1% |
3文字目から1文字 | ||
%変数名:~2% |
3文字目以降全て | ||
!変数名! |
環境変数の値そのもの。(遅延環境変数を有効にした(コマンドプロンプトの起動時に「/v:on 」を指定した)場合のみ使用可能) |
環境変数 | 概要 | 詳細 | UNIX相当 |
---|---|---|---|
%PATH% |
実行コマンドが存在するディレクトリ群を保持している。 コマンドが実行される時は、ここで指定されているディレクトリにコマンドファイルを探しに行く。 |
path /? |
$PATH |
%CD% |
カレントディレクトリ | set /? |
$PWD |
%DATE% |
現在日付。dateコマンド相当。 | set /? |
`date +%Y/%m/%d` |
%TIME% |
現在時刻。timeコマンド相当。(cs(=1/100秒)まで表示する) | set /? |
`date +%H/%M/%S` |
%RANDOM% |
乱数(0〜32767) | set /? |
|
%ERRORLEVEL% |
コマンドの終了コード(エラーコード)。 if文にはこれを判断する演算子が用意されている。 |
set /? |
$? |
%CMDCMDLINE% |
コマンドプロンプト起動時のコマンドラインの内容。拡張機能の確認に使える。 | set /? |
|
%PATHEXT% |
拡張子を省略して実行できるファイルの種類を指定する。→例 [2007-08-25] | ftype /? |
|
%USERNAME% |
ログオンしているユーザーID。[2007-08-25] | $USER |
|
%COMPUTERNAME% |
マシンのコンピューター名。[2007-08-25] | ||
%HOMEDRIVE% |
ユーザーのホームドライブ&ディレクトリー。[2008-07-31] | $HOME |
システムが変更する環境変数は、自分で同じ名称の環境変数として値をセットすることは出来るが、本来の意味での使用ができなくなる。
例えば%ERRORLEVEL%に値を入れてしまうと、コマンドの戻り値がセットされなくなる。
その場合、ERRORLEVELを削除してやると、元の使い方ができるようになる。
PATHだけは、setを使う他に 特別な設定方法(pathコマンド)が用意されている。
>PATH=値 ←実行パスの指定 >PATH 値 ←実行パスの指定(=が無くてもよい) >PATH=%PATH%;値 ←実行パスの追加 >PATH ←実行パスの表示
上述の設定方法で設定したパスを、コマンドプロンプトのsetで確認することが出来る。[2004-05-25]
このとき、例えば以下のように環境変数を定義していたら
環境変数 | 設定値 |
---|---|
CLASSPATH |
%JAVA_HOME%\lib\tools.jar |
JAVA_HOME |
c:\j2sdk1.4.0_01 |
setコマンドで見ると
>set CLASSPATH
CLASSPATH=c:\j2sdk1.4.0_01\lib\tools.jar
と表示されるはず。もし
CLASSPATH=%JAVA_HOME%\lib\tools.jar
と出ていたら、CLASSPATHに対してJAVA_HOMEが有効になっていない。
例えばCLASSPATHが「システム環境変数」で定義され、JAVA_HOMEが「ユーザー環境変数」で定義されていると このような状況になる。たぶん、環境変数は
先に「システム環境変数」が作られ、その後に「ユーザー環境変数」が作られるのだと思う。