<THUROUGHOUT>このコマンドは、歴代のDOS/Windows(95系/NT系)全般で利用できます。
※Windows95/98/MeとWindowsNT/2000/XP/Vista系とではサポートされている機能に差がある場合もありますのでご留意ください。
SET - 環境変数の設定と表示
《機能の説明》
DOSの環境変数を表示、設定、または削除します。
関連するBBS過去ログ……SET, PATH, %環境変数%
※WindowsNT,2000,XPのコマンド・プロンプト(CMD.EXEコマンド・プロンプト)では機能が拡張されており、下記のような複数の書式があります。拡張部分についてはこのページ末尾で説明します。
SET [変数=[文字列]]
SET 検索用文字列
SET /A 式
SET /P 変数=[プロンプト文字列]
《スイッチ/パラメーター》
- なし
- 現在されている環境変数とその内容をすべて表示します。
- 変数
- 追加または変更したい変数名を指定します。
※変数名に「=」記号を含めることはできません。
※DOS/Windows95系では、変数名のアルファベットに小文字を使っても大文字に変換して記憶されます。WindowsNT系では指定した通りに記憶されますが、実用上は区別されません。
※WindowsNT系では「/A」「/P」などはスイッチとして使用するため、これらで始まる環境変数名は定義できません。
- 文字列
- 指定した変数に対応させたい文字列を指定します。省略すると、その環境変数は変数名、文字列ともにクリアされます。
※使用できる文字種に制限はないようですが、 = や半角スペースなどが混在する文字列を指定した場合、変数名と内容(文字列)の区別がまぎらわしくなる場合があります。
※WindowsNT系(CMD.EXE)では、パラメーター全体を引用符号 (")で囲むことによって、
| < > & ( ) など、コマンド・プロンプト上で特殊な意味を持つ文字列を安全に内容に含めることができます。
例 SET "TEST=A>B"
またはエスケープ文字 (^) を用いる方法もあります。
例 SET TEST=^> ( > が記憶されます)
COMMAND.COMにはこれらの機能はありません。
《解説》
- IBM DOS J5.0/V自体が設定する、または必要に応じてユーザーが設定しておけば自動的に参照される環境変数としては、次のものがあります。いずれも、SETコマンドでその内容を変更することが可能です。
COMSPEC |
コマンド・シェルの名前と位置を保持します。CONFIG.SYS内のSHELLコマンドの指定によって、自動的に設定されます。 |
PATH |
PATHコマンドの設定内容を保持しています。 |
PROMPT |
PROMPTコマンドの設定内容を保持しています。 |
SYS |
始動ドライブ名を保持し、SWITCHコマンドで使用されます。 |
TEMP |
DOSコマンドの動作に一時ファイルの作成が必要となるとき、この環境変数に設定されたドライブ名、ディレクトリ名、その一時ファイルの作成場所とします。日本語MS-Windows、その他市販のアプリケーションソフト等にもこの環境変数を参照するものは多いため、読み書き可能でかつ空きスペースが充分にある高速なディスクドライブが指定される必要があります。 |
DIRCMD |
DIRコマンドの動作/表示状態を制御します。 |
- バッチファイルから、すでに設定されている環境変数の内容を参照する際には、その環境変数名の両端に%記号をつけて指定します。
- 例
IF %SYS%.==C:. GOTO DRIVE_C
……この例では、バッチファイルの実行時、%SYS%が環境変数SYSの実際の内容に置き換えられます。
- SETコマンドで新しい環境変数を追加したり、既存の環境変数の設定文字数が増加するような指定を行なった場合、
というエラーメッセージが表示されることがあります。これは、環境変数領域の空き容量が不十分で、新しい定義が保持しきれないことを意味しています。環境変数領域を増やす方法については、COMMANDコマンドの項を参照してください。
《関連コマンド》
- SET 検索用文字列
- パラメータなしの SET コマンドの拡張機能です。
たとえば「Aで始まる名前の環境変数とその設定内容の一覧を見たい」という場合、
SET A
のように指定することで、該当する環境変数と内容がリストされます。
指定可能なパラメータは1文字に限定されていませんので、下記の例のように、より絞り込んで結果を得ることも可能です。
SET APP
むろん、実在する一意の環境変数名を指定した場合は、その環境変数と設定内容が表示されます。
SET APPDATA
指定した文字列に該当する環境変数がみつからない場合は、
環境変数 Z が定義されていません
のようなエラーメッセージが表示され、ERRORLEVEL 1が返ります。
- SET /A 式
- 等号の右側の文字列を式として取り扱います。下記の文字が操作/演算子として使用されます。
() |
グループ化 |
* / % |
算術演算子
※%は「剰余」を算出します。 |
+ - |
算術演算子 |
<< >> |
論理シフト |
& |
ビット演算子 AND |
^ |
ビット演算子 排他的OR(XOR) |
| |
ビット演算子 OR |
= *= /= %= += -= &= ^= |= <<= >>= |
代入 |
, |
式の区切り記号 |
コマンドラインから SET /A を実行すると、式の演算結果の最終的な値が表示されます。
例 SET /A 1+1
実行結果……2
すなわち、コマンド・プロンプト上での簡易電卓として利用できます。
演算の結果を環境変数に割り当てるには、一般のSETコマンドと同様、左辺に代入先の環境変数を指定します。
例 SET /A RESULT1=(4+8)/2
例 SET /A RESULT2=255/2
例 SET /A RESULT3=RESULT1 * RESULT2
上の例のように、式には「既存の環境変数」が直接記述でき、それらの環境変数が保持している値が参照されます。つまり、本来であれば各環境変数の前後に必要な
% 記号の入力が省略できます。
なお、未定義の環境変数を参照した場合は、0として扱われます。
例 SET /A "RESULT4=128^255"
例 SET /A "256>>1"
上の例のように、論理演算子を使用する際は引用符が必要になります。指定しないと予期しない結果が返ったり、リダイレクト符号として扱われてしまうため、注意が必要です。
数値は、デフォルトでは10進数として扱われますが、接頭辞として0xをつけると16進数、0をつけると8進数となります。
例 SET /A 0x10
実行結果 16
例 SET /A 016
実行結果 14
- SET /P 変数=[プロンプト文字列]
- [プロンプト文字列]に指定した文字列を画面に表示した状態でユーザーの1行分のキー入力を待ち、その値を環境変数に割り当てます。
例 SET /P ANSWER=あなたのお名前は? :
[プロンプト文字列]の指定を省略した場合は、何も表示せずにユーザーのキー入力を待ちます。
ユーザーが何も入力せずに改行キーを押した場合、次のようになります。
・まだ存在しない環境変数だった場合、その環境変数は定義されません。
・既存の環境変数である場合、その環境変数の値は変更されません。
従って、バッチ処理でこの機能を使用する場合、
・あらかじめ初期値を設定しておく
・SET /P実行後、環境変数の内容が変化したかどうかを検査する。
……といった手順で使用することをおすすめします。
- 環境変数内容を参照する際の拡張機能
-
- (1)文字列の置換…… %環境変数:文字列1=文字列2%
- 指定した環境変数に記憶されている文字列中の「文字列1」部分をすべて「文字列2」に置換した上で参照します。
例
@echo off
set temp=this is a pen.
echo %temp:pen=cat%
実行結果 this is a cat.
文字列2を省略した場合には、文字列1に該当する部分が削除されます。
- (2)部分参照…… %環境変数:~[-]開始オフセット[,[-]長さ]%
- この書式を用いることで、環境変数文字列内の位置を指定し、その部分だけを抜き出すことができます。
- [-]オフセット
- 環境変数文字列の先頭からのオフセット(距離)で、参照開始位置を指定します。1文字めなら0、10文字めなら9となります。
マイナス記号を指定した場合は「環境変数全体の長さ - オフセット」に相当する値が使われます。つまり「後ろから数えて0バイトから取り出すか」の指定になります。
- [-]長さ
- 取り出す文字列の長さを指定します。省略した場合は、文字列の最後までが指定されたのと同じ扱いになります。
- を指定した場合、「環境変数全体の長さ - オフセット」に相当する値が使用されます。つまり「後ろから数えて0バイトまでを取り出すか」の指定になります。
●FPCU/FPCDIY QUICK LINK online●
この上の各ジャンル名をクリックすると、この下のウィンドウが切り替わります▼
=リンク集のインデックスはこちら=
|