Windows TIPS
| [System Environment] |
テキスト・ファイル中の文字列を環境変数にセットする(setx応用編)
→ 解説をスキップして操作方法を読む
デジタルアドバンテージ 打越 浩幸
2008/04/04 |
| 対象OS |
| Windows XP |
| Windows Server 2003 |
| Windows Vista |
| Windows Server 2008 |
|
|
 |
| ■ |
システムのデフォルトの環境変数を設定しておくと、新しいプロセスが起動されるたびに、その環境変数が引き継がれる。 |
| ■ |
setxの-fオプションを使えば、テキスト・ファイル中から文字列を抜き出して、環境変数にセットできる。 |
| ■ |
-fオプションを使う場合は文字列の位置を示す座標データを指定する。座標は-xオプションで確認できる。 |
|
|
TIPS「setxで環境変数の値を設定する(基本編)」では、setxというコマンドと使って、システムとユーザーの環境変数をセットする方法を紹介した。環境変数をセットしておくと、新しく起動したプロセスやプログラム、コマンド・プロンプトからその変数を参照できる。システムや環境に依存するような値などを変数にセットしておくことにより、プログラムやスクリプトなどに汎用性を持たせることができる(TIPS「環境変数を変更する」も参照)。
本TIPSではsetxのより進んだ使い方として、テキスト・ファイルから文字列を取り出して設定する方法については解説する。
テキスト・ファイルから値を切り出して環境変数にセットする
先のTIPSで紹介したsetxコマンドの使用方法では、指定した文字列やレジストリ・キーの値などを環境変数にセットすることができるが、例えばipconfig.exeコマンドの出力結果(自分のIPアドレスやゲートウェイ・アドレスなどの情報)をセットすることはできない。だが、-fオプションを使ってテキスト・ファイルを指定すれば、その中に含まれる文字列を取り出して環境変数にセットできる。その使い方は次のとおりである。
setx 変数名 -f ファイル名 -a 縦位置,横位置 |
これは、指定された変数「変数名」に、ファイル「ファイル名」の「縦位置,横位置」の場所にある文字列を切り出してセットする、という意味である。最後のパラメータは、切り出す文字列の位置を指定するための座標の指定であるが(0が先頭)、これが実は分かりにくい。指定されたファイルの1行目の先頭の文字列は(0,0)、次の文字列は(0,1)、その次は(0,3)、2行目の先頭の文字列が(1,0)、その次が(1,1)、……、というふうに数えるのだが、内容が複雑だと座標を把握するのは困難である。そこで、まずは-xオプションを指定して各文字列がどの座標を持つのかを出力させ、その結果を使うとよい。
また「文字列」とは、「(空白文字、0x20)」「Tab文字(0x09)」「CR(0x0d)」「LF(0x0a)」で区切られた文字の集まりのことを指すが、「-d "追加文字"」オプションを付けると、それらの文字も追加の区切り文字として認識される。例えば「-d ";,"」とすると、「;」と「,」も区切り文字の1つとして認識される(つまり切り出す文字列から削除できる)。
以上のような事情があるため、ファイル中の文字列を環境変数にするには、次のような手順を踏むとよい。
手順1――対象となる文字列を含むテキスト・ファイルを用意する
例として、ipconfig.exeコマンドの出力結果からゲートウェイ・アドレスを取り出して、GATEWAYADDRESSという環境変数にセットしてみよう。
まずは、コマンドの出力結果を一時的なファイルに保存する。
C:\>ipconfig …IPアドレス情報を表示させる
Windows IP Configuration
Ethernet adapter ローカル エリア接続:
Connection-specific DNS Suffix . : example.com
IP Address. . . . . . . . . . . . : 192.168.1.155
Subnet Mask . . . . . . . . . . . : 255.255.255.0
Default Gateway . . . . . . . . . : 192.168.1.11 …これを環境変数にセットさせたい
C:\>ipconfig > ipconfig.txt …ファイルに保存する |
手順2――座標データを表示させる
次は、-fオプションでファイル名を指定し、さらに-xオプションを付けて座標を表示させる。ただし-xオプションを使う場合、使用するsetxコマンドのバージョンに応じて、少し書式が異なるので注意する(先頭の環境変数名の有無が異なる。Windows XPの場合は、代入はされないが、ダミーで指定しておく)。
■Windows XPのサポート・ツールに含まれるsetxの場合
C:\>setx GATEWAYADDRESS -f ipconfig.txt -x
■Windows Server 2003/Windows Vista/Windows Server 2008の場合(これらのOSでは標準コマンドとして用意されている)
C:\>setx -f ipconfig.txt -x |
実際に実行すると、次のようになる(これはWindows XPのサポート・ツールに含まれるsetxコマンドの実行例)。
C:\>setx GATEWAYADDRESS -f ipconfig.txt -x
(1,0 Windows) (1,1 IP) (1,2 Configuration)
(4,0 Ethernet) (4,1 adapter) (4,2 ローカル) (4,3 エリア接続:)
(6,0 Connection-specific) (6,1 DNS) (6,2 Suffix) (6,3 .) (6,4 :) (6,5 example.com)
…(中略)…
(8,0 Subnet) (8,1 Mask) (8,2 .) (8,3 .) (8,4 .) (8,5 .) (8,6 .) (8,7 .) (8,8 .) (8,9 .) (8,10 .) (8,11 .) (8,12 .) (8,13 :) (8,14 255.255.255.0)
(9,0 Default) (9,1 Gateway) (9,2 .) (9,3 .) (9,4 .) (9,5 .) (9,6 .) (9,7 .) (9,8 .) (9,9 .) (9,10 .) (9,11 :) (9,12 192.168.1.11)
|
一見すると非常に複雑だが、よく見ると、「(縦座標,横座標 文字列)」というパターンが繰り返し表示されていることが分かる。分かりやすいように、オリジナルのテキスト・ファイルに含まれている文字列部分を赤くしてみると次のようになる。
 |
| setxの-xオプションの実行結果 |
| setxの-xオプションの実行結果のうち、元のテキスト・ファイルに含まれる部分を赤く表示してみた(実際にはただのテキスト・ファイルなので、色は付いていない)。デフォルト・ゲートウェイ・アドレスの部分は、(この画面では隠れているが)、9行目の最後の方にある(9,12)であることが分かる。 |
以上の結果から、求めるゲートウェイのIPアドレスは「Default Gateway」の行の最後にある(9,12)であることが分かる。
手順3――環境変数に代入する
文字列の座標が分かれば、それを-aオプションで指定すればよい。
C:\>setx GATEWAYADDRESS -f ipconfig.txt -a 9,12
Extracted value is: 192.168.1.11 …結果のゲートウェイ・アドレス |
ここでは「192.168.1.11」という文字列が抜き出され、それがGATEWAYADDRESSという環境変数にセットされている。
|
この記事と関連性の高い別のWindows TIPS |
|
|
generated by
|
|
Windows Server Insider フォーラム 新着記事
スキルアップ/キャリアアップ(JOB@IT)