━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ いざというときに役立つMS−DOS 執筆:速星 千里 第23号(2003.09.06) 環境変数 ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ <目次> ■ はじめに ● STARTコマンドのオプション ■ 環境変数 ● SETコマンド(参照) ● 代表的な環境変数 ● SETコマンド(設定) ● バッチファイルで環境変数を使う ■ SYSTEMINFOコマンド(WindowsXP) ■ コメントをお待ちしています ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ ■ はじめに ------------------------------------------------------------------------ 皆さん、こんにちは。速星です。 今週もよろしくお願いします。 ------------------------------------------------------------------------ ● STARTコマンドのオプション 読者の方から質問メールをいただきました。 > unixなどで、ターミナルからバックグラウンドで実行する場合、 > emacs & > > の様に、コマンドの最後に&をつけると思いますが、 > DOSでも同じ機能はあるのでしょうか? > 私は、DOS窓から秀丸エディタを起動する際に、以下のように > バッチファイルを当てています。 > > @echo off > "C:\Program Files\Hidemaru\Hidemaru.exe" > > ここで、ただ単純に&を付けるだけではバックグラウンドで起動しませんでした。 > 何かよい手はあるのでしょうか? UNIXはマルチタスクですが、DOSは特殊なソフトを使わない限りシングルタス クです。従って、バックグラウンドでの動作という概念はDOSそのものにはあ りません。UNIXの「&」のような表記法も、当然ながら、標準では存在しません。 この場合、STARTコマンドのオプションが活用できます。 前号では説明を割愛していましたが、STARTコマンドは、起動するプログラムの ウインドウの大きさ(最大化、通常のウインドウ、最小化)をオプションで指定 できます。 このときのオプションは、必ずプログラム名より前に記述する必要があります。 プログラム名の後ろに記述したオプションは、STARTコマンドのオプションでは なく、STARTコマンドを使って起動するプログラムのオプションと見なされるか らです。 ご質問のように最小化の状態で起動したい場合、次のようになります。 START /MIN "C:\Program Files\Hidemaru\Hidemaru.exe" また、最大化した状態で起動したい場合は、次のように指定します。 START /MAX "C:\Program Files\Hidemaru\Hidemaru.exe" 通常のウインドウサイズで起動するときは、オプションの指定は不要です。 ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ ■ 環境変数 ------------------------------------------------------------------------ DOS本体やプログラムの動作を制御するためにCOMMAND.COMが管理している設 定情報のことを、環境変数といいます。 環境変数は、特定の役割を持つファイルやディレクトリの位置を示すために用い られることが多いのですが、コマンドを実行する際のオプションの代わり、ある いはプログラム間の情報の受け渡しにも使われることがあります。 ------------------------------------------------------------------------ ● SETコマンド(参照) 環境変数を参照・設定するのがSETコマンドです。 まずは、お使いのコンピュータでどんな環境変数が設定されているかを確認して みましょう。 「SET」と入力して下さい。以下のような文字列が表示されるはずです。 > M:\DOS>SET > PROMPT=$P$G > COMSPEC=A:\COMMAND.COM > PATH=A:\;A:\WINDOWS;A:\DOS;A:\IDEDRVRS > TEMP=A:\TEMP > DOSDIR=A:\DOS > windir=A:\WINDOWS 表示される内容は、お使いのWindowsのバージョンやその設定によって、大幅に 異なります。ただ、ここで確認していただきたいのは次の2点です。 ☆ 書式 環境変数は、必ず「変数名=値」という書式で表現されます。 等号「=」は半角で、その両側にスペースやダブルクォーテーションなどは一切 入りません。 ☆ 項目数 表示させてみて、意外と多くの環境変数が自動設定されているということに驚か れたかもしれません。 Windows95,98,MeはDOSの流れをくむOSなので、環境変数を実際に利用して います。環境変数の数の多さは、DOSがWindowsの陰で大事な仕事をしている 証拠といえるでしょう。 WindowsNT,2000,XPはDOSから独立したOSですが、DOS窓がCUIの管理 ツールとしても使えるように独自の進化を遂げたため、環境変数は、過去のプロ グラムへの互換性を保つためだけでなく、ユーザやプログラムに詳細なシステム 情報を提供する手段としても活用されています。このため、環境変数は、無くな るどころか、大幅にその数を増やしています。 ------------------------------------------------------------------------ ● 代表的な環境変数 DOSやWindowsが自動的に設定する環境変数をいくつか紹介します。 なお、これらの環境変数はシステムが利用している場合もありますので、むやみ に値を変更しないようにして下さい。 また、Windows2000,XPには、独自の環境変数が多数あります。それらについては ZDNetの記事(下記URL)でご確認下さい。 http://www.zdnet.co.jp/help/tips/windows/w0538.html ☆ COMSPEC COMMAND.COMが保存されている位置を記憶している環境変数です。 COMSPECというのは「COMmand.com SPECify」(COMMAND.COMの特定)の略なので はないかと思います。 Windows2000,XPの場合、この環境変数にはCMD.EXEが保存されている位置が記憶 されています。CMD.EXEはこれらのWindowsにおける「コマンドプロンプト」の 本体プログラムです。CMDというのは「CoMmanD」の略です。 ☆ TEMP、TMP DOSやWindowsでプログラムが一時ファイルの作成先として利用するディレク トリの位置を記憶している環境変数です。 TEMPやTMPというのは「TEMPorary」(一時)の略です。 ☆ WINDIR、WINBOOTDIR Windowsディレクトリ(Windowsがセットアップされているディレクトリ)の位置 を記憶している環境変数です。 「WINdows BOOT DIRectory」(Windows起動ディレクトリ)の略です。 なお、Windows2000,XPには環境変数WINBOOTDIRがないようですが、それに代わる 環境変数SystemRootが設定されています。 ☆ ProgramFiles(Windows2000,XP) プログラムをインストールするディレクトリ「Program Files」の位置が格納さ れた環境変数です。 Windows2000,XPのみ設定されています。 ☆ USERPROFILE(Windows2000,XP) 各ユーザのホームディレクトリの位置を記憶している環境変数です。 Windows2000,XPのみ設定されています。 ☆ PROMPT プロンプトの表示形式を記憶している環境変数です。 これについては、また後の号で詳述します。 ☆ PATH よく使うプログラムの位置を記憶しておくための環境変数です。 この環境変数については、次号で説明します。 ------------------------------------------------------------------------ ● SETコマンド(設定) 環境変数は通常、SETコマンドで設定します。 書式は次の通りです。 SET 変数名=値 先程記した様に、等号「=」は半角で、その両側にスペースやダブルクォーテー ションなどは一切入りません。 例えば、「SET MSG=Hello!」と入力すれば、「Hello!」という文字列が値として 設定された環境変数MSGを作ることができます。「SET」と入力して、正しく設定 できているかどうか確認してみて下さい。 変数名や値には、特別な意味を持つ文字「<」「>」「|」を除き、全ての文字を 用いることができます。スペースやタブなども使用可能です。また、実験してみ たところ、全角文字もどうやら使用可能なようです。 等号「=」の前後にスペースやダブルクォーテーションなどを入れてはいけない と書いたのは、このためです。もし「SET MSG = Hello!」のように等号の前後に 半角スペースを入れると、変数名は「MSG 」、値は「 Hello!」と、いずれも半 角スペースを含んだものになってしまいます。 既に設定されている環境変数の値を上書きする場合も、上記と同様の方法になり ます。「SET MSG=Hello, world!」と入力して、先に設定した環境変数を上書き してみましょう。 環境変数を削除する場合は、次の書式が利用できます。 SET 変数名= では、先程から使っている環境変数MSGを削除してみましょう。 「SET MSG=」と入力して下さい。何も表示されませんが、この操作で、MSGはき ちんと削除されています。「SET」と入力して確認してみて下さい。 ------------------------------------------------------------------------ ● バッチファイルで環境変数を使う 環境変数は、バッチファイル中で変数として利用することができます。 設定には、通常と同様にSETコマンドが利用できます。 環境変数を個別に参照する場合は、「%変数名%」と記述します。 「%変数名%」は、バッチファイルの実行時に自動的にその変数の値に置き換えら れます。この置き換えのことを、展開といったりします。 具体例をみてみましょう。 -----(環境変数利用例バッチファイルここから)----- START %TEMP% DIR %WINDIR%\*.COM SET MSG=Hello, world! ECHO %MSG% -----(環境変数利用例バッチファイルここまで)----- このバッチファイルをDOS窓で実行すると、次のようになります。 > M:\DOS>START C:\WINDOWS\TEMP まず1行目は、%TEMP%が「C:\WINDOWS\TEMP」のように、お使いの環境に応じた ディレクトリ名に展開されます。従って、「マイコンピュータ」でこのディレク トリが開かれることになります。 > M:\DOS>DIR C:\WINDOWS\*.COM > > ドライブ C: のボリュームラベルは WINDOWS 98 > ボリュームシリアル番号は 146D-1DE8 > ディレクトリは C:\WINDOWS > > WIN COM 35,751 99-05-05 22:22 WIN.COM > COMMAND COM 118,174 99-05-05 22:22 COMMAND.COM > 2 個 153,925 バイトのファイルがあります. > 0 ディレクトリ18,545.47 メガバイトの空きがあります. 2行目は、%WINDIR%が「C:\WINDOWS」のように、Windowsディレクトリ名に展開 されます。従ってパス全体は、「C:\WINDOWS\*.COM」となります。 環境変数は、このようにパス名の一部分として使われることがよくあります。パ ス名の表現に環境変数を利用すれば、プログラムがどのディレクトリに置かれて いても問題なく動作させることができるからです。また、バッチファイルを別の コンピュータに移植したときにも、問題なく動作する可能性が高くなるからです。 さて、2行目のコマンドの結果としては、ディレクトリ%WINDIR%にある、拡張子 「.COM」のファイルが一覧表示されます。 > M:\DOS>SET MSG=Hello, world! 3行目では、環境変数MSGを設定しています。 > M:\DOS>ECHO Hello, world! > Hello, world! 4行目は、%MSG%が「Hello, world!」に展開されています。 この例では、環境変数MSGは直前の行でただ設定しただけであり、あまり有効性 を感じないかもしれません。しかし、バッチファイル内で自由に変数を設定でき るということは、バッチファイル作成の自由度を上げるために欠かせない要素で す。 ECHOコマンドにより、文字列「Hello, world!」が表示されます。 ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ ■ SYSTEMINFOコマンド(WindowsXP) ------------------------------------------------------------------------ WindowsXPには、SYSTEMINFOコマンドという、コマンドプロンプト上でSETコマン ドよりもさらに詳細なシステム情報を得るためのコマンドがあります。 SYSTEMINFO [/S コンピュータ名] (「/S」以外にも指定できるオプションがあります。ヘルプ「/?」参照) 通常はオプションなしで実行します。お使いのコンピュータの詳細な構成情報が 一覧表示されます。 また、オプション「/S コンピュータ名」を付けて実行すれば、ネットワーク上 の他のコンピュータの情報も表示させることができます。 ------------------------------------------------------------------------ 今回はここまでです。 お疲れ様でした! 次号の予定は、「内部コマンドと外部コマンド」です。 コマンドやプログラムとMS−DOSとの関係について説明します。 ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ ■ コメントをお待ちしています ------------------------------------------------------------------------ 皆さんからの感想・質問・要望をお待ちしています。 「こんなテーマを扱ってほしい」 「こんなことはできるの?」 「このへんが分かりにくかった」 「1回の分量を増やしてほしい/減らしてほしい」 など、掲示板(下記URL)まで気軽にお願いします。 http://bbs9.otd.co.jp/dos/bbs_thread (スレッド表示) http://bbs9.otd.co.jp/dos/bbs_tree (ツリー表示) メールでもコメントを受け付けておりますので、そちらもご利用下さい。 tetrahedrane@yahoo.co.jp なお、いただいたコメントは、本マガジン上で引用する場合があります。 (メールアドレスやお名前は一切公開いたしません) ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ ● 感想・質問宛先 http://bbs9.otd.co.jp/dos/bbs_tree tetrahedrane@yahoo.co.jp ● 登録・解除・バックナンバー http://www.geocities.co.jp/Bookend-Hemingway/4963/column/dos/ このメールマガジンは、『まぐまぐ』を利用して発行しています。 http://www.mag2.com/m/0000106066.htm (c) 2003 Chisato Hayahoshi