チュートリアル - Windows システム データへのアクセス

チュートリアル > Windows システム データへのアクセス

MAXScript を使ってファイル属性、ファイル、ディレクトリなどといったシステム情報にアクセスすることができます。ただし引き続き、3ds Max の外部のシステム環境のほとんどは、MAXScript で直接対処することはできません。幸いなことに、コマンド プロンプト コンソール内で DOS コマンドを実行できる dosCommand メソッドがあります。

以下の例では、dosCommand メソッドを使用して Windows 内で設定された PATH 環境変数を取得します。

関連トピック:

システム情報

DOScommand による外部コマンドの実行

外部ファイル メソッド

FileStream 値

全体の流れ:

将来コードを再使用するための関数を作成します。

コマンド プロンプトから Path コマンドを実行し、出力をファイルに切り換えます。

結果のファイルを読み取り、最初の "=" とその後の ";" 文字の間のすべてのパスを収集します。

リストにパスを格納し、準備ができたら関数の結果としてリストを返します。

一時ファイルを削除し、ディスク消費量を減らします。

MAXScript

fn getEnvironmentPaths =
(
 dosCommand "path >env.txt"
 path_array = #()
 in_text = openfile "env.txt"
 skipToString in_text "="
 while not eof in_text do
 (
  str = readDelimitedString in_text ";"
  if str != "\n" then append path_array str
 )
 close in_text
 deleteFile "env.txt"
 path_array
)

ステップごとの解説

fn getEnvironmentPaths = (

これは、引数のないユーザ定義の関数になります。

DosCommand "path >env.txt"

dosCommand メソッドには、実行されるコマンドを含む文字列のパラメータが必要です。Windows のコマンド プロンプトに対して入力できるどのようなコマンド シーケンスでもパラメータにすることができます。この例では、現在設定されている OS 環境のパスを表示する PATH コマンドを実行します。さらに、コマンドの実行結果を「env.txt」というテキスト ファイルに書き出すように Windows に指示します。その後、このファイルを使用して結果を読み取ることができます。

外部コマンドの実行

path_array = #()

パス定義を格納するための配列が必要になります。最初は空になるように、配列を初期化します。

in_text = openfile "env.txt"

次に、 dosCommand の実行で作成されたファイルを開きます。ファイルの内容は、「PATH=D:¥WINDOWS¥SYSTEM32 ;D:¥WINDOWS ; 」のようになります。 当然ながら、パスはシステムによって異なります。最初のパスは「=」文字の後で始まり、「;」文字の前で終わることがわかります。最初のパスの後の各パスは「;」文字で始まり、「;」文字で終わります。

FileStream 値

SkipToString in_text "="

そのため、最初のパスの読み取りを開始するために「=」記号の位置にスキップします。

FileStream 値

while not eof in_text do (

in_text の EOF までブラケット内のコードを繰り返す while ループを使用して、ファイル内のすべてのパスを抽出します。

While ループと Do ループ

str = readDelimitedString in_text ";"

すべてのパスは「;」で区切られていることがわかっているため、ファイルからテキスト フラグメントを読み取るのに readDelimitedString 関数を使うことができます。読み取ったパスをユーザ変数の str に格納します。

FileStream 値

if str != "\n" then append path_array str

次に、str 変数が EOF の前に EOL 記号を含んでいるかどうかを検査する必要があります。 含んでいない場合は、読み取った文字列をパスの配列に追加することができます。

) close in_text

これで、読み取りによる準備ができたので、ファイルを閉じることができます。

FileStream 値

DeleteFile "env.txt"

これは単なる一時ファイルだったので、ディスクから削除することができます。

外部ファイル メソッド

path_array

最後に、関数の実行結果として収集したパスの配列を返すことができます。

)

スクリプトの使い方

これは関数なので、呼び出す必要があります。パラメータはないので、() のみを付けて呼び出します。

env_paths = GetEnvironmentPaths()

変数の env_paths に、Windows で設定された環境パスの配列が含まれます。

関連項目

同じメソッドを使用して、環境の TEMP パス名、ハード ディスク ドライブの名前などの OS 関連の他のデータにアクセスするスクリプトを開発することができます。

戻る

「チュートリアル」のインデックス ページ