チュートリアル > Windows システム データへのアクセス |
MAXScript を使ってファイル属性、ファイル、ディレクトリなどといったシステム情報にアクセスすることができます。ただし引き続き、3ds Max の外部のシステム環境のほとんどは、MAXScript で直接対処することはできません。幸いなことに、コマンド プロンプト コンソール内で DOS コマンドを実行できる dosCommand メソッドがあります。
以下の例では、dosCommand メソッドを使用して Windows 内で設定された PATH 環境変数を取得します。
全体の流れ: |
将来コードを再使用するための関数を作成します。 |
コマンド プロンプトから Path コマンドを実行し、出力をファイルに切り換えます。 |
結果のファイルを読み取り、最初の "=" とその後の ";" 文字の間のすべてのパスを収集します。 |
リストにパスを格納し、準備ができたら関数の結果としてリストを返します。 |
一時ファイルを削除し、ディスク消費量を減らします。 |
dosCommand メソッドには、実行されるコマンドを含む文字列のパラメータが必要です。Windows のコマンド プロンプトに対して入力できるどのようなコマンド シーケンスでもパラメータにすることができます。この例では、現在設定されている OS 環境のパスを表示する PATH コマンドを実行します。さらに、コマンドの実行結果を「env.txt」というテキスト ファイルに書き出すように Windows に指示します。その後、このファイルを使用して結果を読み取ることができます。
パス定義を格納するための配列が必要になります。最初は空になるように、配列を初期化します。
次に、 dosCommand の実行で作成されたファイルを開きます。ファイルの内容は、「PATH=D:¥WINDOWS¥SYSTEM32 ;D:¥WINDOWS ; 」のようになります。 当然ながら、パスはシステムによって異なります。最初のパスは「=」文字の後で始まり、「;」文字の前で終わることがわかります。最初のパスの後の各パスは「;」文字で始まり、「;」文字で終わります。
そのため、最初のパスの読み取りを開始するために「=」記号の位置にスキップします。
in_text の EOF までブラケット内のコードを繰り返す while ループを使用して、ファイル内のすべてのパスを抽出します。
すべてのパスは「;」で区切られていることがわかっているため、ファイルからテキスト フラグメントを読み取るのに readDelimitedString 関数を使うことができます。読み取ったパスをユーザ変数の str に格納します。
次に、str 変数が EOF の前に EOL 記号を含んでいるかどうかを検査する必要があります。 含んでいない場合は、読み取った文字列をパスの配列に追加することができます。
これで、読み取りによる準備ができたので、ファイルを閉じることができます。