• ベストアンサー

「環境変数を作成する方法」がどうしても分かりません。教えてください

お世話になっております。 以前から環境変数について勉強しているのですが、文字で理解はできても実感がわきません。 もっと言えば、「分かりやすい言葉で噛み砕けていません」そして「何をすれば設定を変えられるのか?という「実感レベル」に落とし込めていません」。 ちゃんと理解できていないので、的を射ていない質問かもしれませんが、教えていただけないでしょうか? (私の環境変数に対する認識は→「プログラムを動作させるためのプロセスを定義するための仕組み」と理解しておりますが、間違っていたら申し訳ございませんがご指摘ください) 前は、ログオンした時間がわかるバッチファイルを作ったのですが、それ以上の情報を引き出すには環境変数をいじらなければならないようです。 今回で言えば、ログオンした時にユーザ名も取得できる方法を知りたいと思っております。 ヒントをいただければ幸いです。 ※「~を使う」だけではなく、既存の環境変数など例に用いて仕組み(メカニズム)も解説いただけるとわがままではありますが、非常に嬉しいです。 贅沢申して恐れ入りますが、宜しくお願い致します。

質問者が選んだベストアンサー

  • ベストアンサー
回答No.2

 環境変数は、その変数名と値のペアがプロセスの起動時にメモリにコピーされるものです。プロセス(プログラム)は、必要に応じて変数名をキーにして値を取得し、自身の挙動を決定します。  コマンドプロンプトで環境変数は、 set 変数名=値 で設定できます。そして、この環境変数とその値は、そのコマンドプロンプトから起動されたプロセスに引き継がれ(コピーされ)ます。  また、環境変数は、マイコンピュータ→右クリック→プロパティ→詳細設定タブ→環境変数ボタン ですべてのプロセス起動時に設定される変数と値のペアを登録することもできます。  C/C++ などでプログラミングする場合は、SetEnvironmentVariable という API を使って変数と値のペアをセットします。  いくつか既定の環境変数というのがあり、ユーザ名もそのひとつです。ユーザ名は USERNAME という環境変数にセットされます。バッチファイルで値を参照するには %USERNAME% と記述します。既定の環境変数は「ヘルプとサポートセンター」の「コマンド シェルの概要」を見ると分かります。

jcn0221
質問者

お礼

返事が遅くなってしまいスミマセン。 基本的な概念を教えていただき、ありがとうございました。 時間がだいぶ経過しましたが、今ではちゃんと理解できるようになったと思います。 これからも宜しくお願い致します。

その他の回答 (1)

  • Senna_FF
  • ベストアンサー率45% (153/334)
回答No.1

まずは、このカテゴリー内で「環境変数」をキーワードに検索すると、 数々の有益情報が見つかると思いますが・・・ そちらは参照されましたか。。。 なにか、回答できればと思いましたが、すでに多くの方がたくさんの書き込みをされていますよ。 (正直私自身もあらためて勉強になりました)

jcn0221
質問者

お礼

返事が大変遅くなってしまいスミマセン。 あれからいろいろ環境変数について勉強しましたし、 探してみました。 このサイトでもキーワードとして環境変数は引っかかってくるのですが、自分の理解度と自分の知りたい内容にマッチしたものが引っかかってこなかったのでみなさんからお知恵を借りようと思っていたのですが、自分の理解度が高まった上でこのサイトを再度読み直したら理解できました。 ありがとうございました。

関連するQ&A

  • バッチファイルにおける環境変数分の繰り返し処理

    こんにちは。 現在、CSVから読み込んだ値(ファイル名)を環境変数に格納し、その環境変数に合致したファイルの移動を行う。というバッチファイルを作成しています。 作成にあたってCSVからのファイル名の読み込み及び、環境変数に全てのファイル名を1個ずつ格納する事(a1=AAやa2=BBなど)には成功したのですが、その後のファイルを移動するコマンドが上手く書けません。 ちなみに move "*%a1%*.txt" "C:\" move "*%a2%*.txt" "C:\" 上記のように1個ずつ手動で環境変数を指定しての移動は出来るのですが、その日によって 取得するファイル名(環境変数の数)が異なってくる為、可能であれば自動で環境変数の数を取得し環境変数分、1個ずつ環境変数からファイル名を読み込み、そのファイルを移動させる。と言ったバッチを組みたいのです。 よろしくお願い致します。 ------------------------------------------------------------------ set count=1 for /f %%i in (test.csv) do @call :add %%i goto PROCESS1 :add set a%count%=%1 set /A count+=1 goto :EOF :PROCESS1 ※移動するコマンド ------------------------------------------------------------------

  • システム環境変数の削除の自動化(バッチ化)

    ●質問内容 システム環境変数を変更する場合(WindowsXP時)、 「スタート」⇒「設定」⇒「コントロールパネル」⇒「システム」の 「システムのプロパティ」画面の「詳細設定」タグ内の「環境変数」ボタンを 押下して「環境変数」画面にて新規/編集/削除を実施すると思います。 システム環境変数の削除を行うにあたり上記一連操作をバッチファイル 等の単純操作にて実施したいと考えているのですがどのようにすれば実現できるでしょうか? 条件は以下の通りです。 ・OSはWindowsXPもしくはWindows2000。 ・削除するシステム環境変数名は決まっている。 ・ログオン/ログインや再起動は行わずに削除情報を反映させたい。 ●質問内容補足 自分で調べた範囲ではシステム環境変数の新規/編集であれば Windows2000のリソースキット中のsetx.exeというプログラムを 利用すれば可能だということが分かりました。 このHPで言っているように削除もバッチ処理で行いたいのです。 参考HP<<http://chinpindo.blog11.fc2.com/blog-entry-61.html#more>> お手数ですがご回答頂けると幸いです。 よろしくお願いいたします。

  • Servletから呼ぶ外部コマンドの環境変数をJavaでセットしたいです

    JavaServletから、以下でJavaのバッチを呼んでいます。 Process process = Runtime.getRuntime().exec("java -classpath /export/home/test Batch001"); Batch001で使用する環境変数をJavaでセットし別途シェルファイルを作らずにすむ方法はありますでしょうか? シェルであれば、以下のようにできますがファイルを増やしたくないのです。 #/bin/csh/bin setenv LD_LIBRARY_PATH /xxx/xxx/xxx java -classpath /export/home/test Batch001

  • 環境分析をまとめた報告書の作り方を教えて下さい。

    環境分析いわゆるSWOT分析をしたいのですが、 まず、ただ環境分析をするのでなく、 社員に理解できるような、報告書として提出したいと思います。 自分だけが理解しても、伝わらなければ意味がないと思います。 どうすれば、いい環境分析報告書のようなものを作れるでしょうか? また、こういうふうに私たちは環境分析をしているなど、具体的なプロセス について教えていただける範囲でいいので、教えて下さい。 今ひとつ、環境分析の手法が確立していないように思います。 ・社員に伝わる環境分析報告書 ・環境分析の手法 この二点について、アドバイスをお願いします。 わがままな質問ですが、よろしくお願いします。

  • COBOL 9(02)で定義した変数にマイナス値をセットすると?

    COBOLについて教えてください。 現在、既存のシステム(COBOL)を机上でチェックしているのですが、 関数からの戻り値変数を (例)RC 9(02) で定義して、 異常発生時に、MOVE -1 で値セットしているロジックがありました。 S9タイプではないので、誤動作を起こすと思うのですが、 実際このような処理を行うと、変数RCにはどんな値がセットされるのでしょうか? 実行環境が無いので、動作確認ができず、困っています。(バグかと思うのですが、該当のロジックは幸いにも今まで実行されていなかったようです) よろしくお願いします。

  • 仮想環境へのOSのインストール

    Vmware playerでWindows7上に他のOSをインストールすることができます。だいたいうまく行っているのですが不明な点があり、お尋ねします。 インストールプロセスの中では必ず、ファイルシステムの作成とか、既存のシステムを削除とか、MBRの上書きとか、の承認を求めてきます。”これから壊すが本当にいいか?”という問になりますが、どんどんOKしても良いのでしょうか。仮想環境なのだから、なにもかも仮想という風に理解してOKで進んで行っていいものかなと思い、確認のためにお尋ねします。 いかがなものでしょうか。

  • VB6.0でシステム環境変数PATHへ、%XXX%設定後、ログオフ以外で反映する方法について

    1.OS Windows2000 Professional SP4 2.プログラム VB6.0 3.質問内容   システム環境変数を登録後、ログアウトなしで、反映できない。   MS文書番号104011で、SendMessageTimeoutで、変更を通知しても   %XXXX%で、PATHに追加登録した内容が展開されない。   なお、regedt32.exeで、%XXXX%は、REG_EXPAND_SZで登録を確認 4.事象 1)登録内容   プログラムにて、システム環境変数に以下登録    A=C:\tmp    <= 新規     AA=%A%\work  <= 新規     PATH=現状項目;%A%\tmpi   <= 既存へ追加 2)プログラム実施結果    コマンドプロンプトで、確認を行うと、    AA=C:\tmp\work に、展開されているが、    PATH=現状項目;%A%\tmpi     と、展開されていない。また、この状態で、C:\tmp\tmpi に、    バッチを作成しC:\から、起動しても、PATHが通っていないため、    「プログラムが見つからない」というエラーがでます。    また、SendMessageTimeoutで、通知しても、コマンドプロンプトから    PATHを確認しても、PATH=現状項目;%A%\tmpi  となり、展開    されていない。   3)リブートすると、展開されるようです。     ※regedt32で、確認すると、PATHには、現状項目;%A%\tmpi で       登録されています。 5.疑問  リブートせずに、通知させる方法はないでしょうか?  特に、新規に登録したシステム環境変数はOKで、追加で登録したPATHに  反映できないのは、なぜでしょうか? 以上 アドバイスのほど、よろしくお願いします。

  • MQL4の変数について質問です。

    タイトルの通りです。 まだ学習を初めて1週間程度の素人です。 今のところ理解したところは、仕組みとしてはC言語に近いようで、 オブジェクトを生成しない、関数を呼び出すタイプのプログラミング言語というところ。 インジケータは標準ライブラリや外部ファイルを読み込んで作成する。 ティックに変化が出たら都度OnCalculate()が呼び出される。 というくらいです。 私自身、C言語やPHP、JAVAなどは大学や自学、仕事で勉強をしたので プログラムの基本的なことはある程度理解できていると思います。 とりあえず最終的にEAの構築までできたらと考えていますが、 まずはMQL4言語というプログラムの挙動について質問させてください。 まず配列について配列変数を定義したときの初期値は何でしょうか? また、初期値を判別する、もしくは初期値か代入値かを判別するような関数があれば教えてください。 特に参考書を買ったりはしていないのでド素人の質問とは思いますがよろしくお願いします。

  • バッチファイルが認識されず起動しません

    バッチファイルをダブルクリックしても、「○○○. batは有効なWin32アプリケーションではありません」と表示されて、起動できません。 ■環境:WindowsXP 64Bit版 SP3 ■以下、確認したこと (1)非常にシンプルなTEST.BATを作成したが、同じエラーが表示され起動できませんでした。   このバッチファイルの内容は cmd/k dir c: (2)Windowsの拡張子に対する関連付けは、「Windowsバッチファイル」になっていました。 (3)環境変数のPATHEXTに.BATは登録されていました。 (4)自分以外のユーザーでログオンすると、バッチは正しく動作します (5)Dos窓にバッチファイルをドラッグ&ドロップすると、正しく動作します 何かWindowsの設定がおかしいのでしょうか? とても困っています、教えてください!

  • 再度、バッチファイルについて質問

    次の文はBATファイルの一部分です。どういう意味か教えて下さい。 call %ztk_env%ZTK_SET_ENV.BAT '%'で囲まれた部分は環境変数であること、'call'が'ZTK_SET_ENV.BAT'を呼んでいることは理解しているのですが、環境変数と後ろのバッチファイルの関係がわかりません。どうか教えてもらえませんか?