JScript 環境変数を取得してみる


環境変数の内容を取得するヤツはこんな感じなんですよ。
(WScript Shell Object).ExpandEnvironmentStrings(“%WinDir%”);

メソッド説明はこちら!

 

で、ですね、

肝心の環境変数知らんのやけど・・・

ってなるわけよ。

検索すればこういった親切な解説サイトはいくらでも見つかるのだけど
もう少し動的にとりたいなぁとか思ったので

そこでSetコマンドを使って取得する

ようにしてみた。

それがこれ

(function() {

    /**---------------------------------------------------------------
     * 環境変数とかとってくる
     * @param {string} filter
     * @return {list}
     */
    function getEnvStr(filter)
    {
        var filter = filter || "";
        var wsh = WScript.CreateObject("WScript.Shell");
        var cmd = ["cmd.exe /c set ", filter];
        wsh = wsh.Exec(cmd.join(""));
        var file_list = wsh.StdOut.ReadAll();
        file_list = file_list.split("\r\n");
        file_list.pop();
        var return_list = [];

        for (i in file_list) {
            return_list.push(file_list[i].split("=")[0]);
        }

        return return_list;
    }

    /**---------------------------------------------------------------
     * プリント
     * @param {string} str
     * @param {boolean} carriage_return キャリッジリターン
     */
    function print(str, carriage_return)
    {
        var c_ret = carriage_return || false;
        if (c_ret) {
            WScript.StdOut.Write("\r" + str);
            return;
        }

        WScript.StdOut.Write("\n" + str);
        return;
    }

    /**-------------------------------------------------------------------------
     *
     * @main
     *
     */
    function main()
    {
        var wsh = WScript.CreateObject("WScript.Shell");
        var sysPath = wsh.ExpandEnvironmentStrings("%WinDir%");

        print(sysPath);
        print("");

        var envStrList = getEnvStr();
        print("======================環境変数一覧ここから======================");
        print("");

        for (i in envStrList) {
            print("");
            print("環境変数名");
            print(envStrList[i]);
            print("環境変数内の内容");
            print(wsh.ExpandEnvironmentStrings("%" + envStrList[i] + "%"));
        }
        WScript.Sleep(5000);
    }

    // run
    main()

})();

まぁ、大したことはやっていない。
dos実行させてリターンを取得。
そこから環境変数をリストとして返すって感じ。
これが意外にシンプルで使いやすかった。

味噌はココ。

これで環境変数を動的にそう!

 

以上今日のメモでした。

 

一応GitHubにも上げておいた、

環境変数とその内容を取得したりするテスト

Leave a comment

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください