MAXScript を使ってファイル属性、ファイル、ディレクトリなどといったシステム情報にアクセスすることができます。ただし引き続き、3ds Max の外部のシステム環境のほとんどは、MAXScript で直接対処することはできません。幸いなことに、コマンド プロンプト コンソール内で DOS コマンドを実行できる dosCommand メソッドがあります。
以下の例では、dosCommand メソッドを使用して Windows 内で設定された PATH 環境変数を取得します。
関連トピック:
全体の流れ:
将来コードを再使用するための関数を作成します。
コマンド プロンプトから 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; 」のようになります。当然ながら、パスはシステムによって異なります。最初のパスは「=」文字の後で始まり、「;」文字の前で終わることがわかります。最初のパスの後の各パスは「;」文字で始まり、「;」文字で終わります。
SkipToString in_text "="
そのため、最初のパスの読み取りを開始するために「=」記号の位置にスキップします。
while not eof in_text do (
in_text
の EOF までブラケット内のコードを繰り返す while
ループを使用して、ファイル内のすべてのパスを抽出します。
str = readDelimitedString in_text ";"
すべてのパスは「;」で区切られていることがわかっているため、ファイルからテキスト フラグメントを読み取るのに readDelimitedString 関数を使うことができます。読み取ったパスをユーザ変数の str に格納します。
if str != "\n" then append path_array str
次に、str 変数が EOF の前に EOL 記号を含んでいるかどうかを検査する必要があります。 含んでいない場合は、読み取った文字列をパスの配列に追加することができます。
) close in_text
これで、読み取りによる準備ができたので、ファイルを閉じることができます。
DeleteFile "env.txt"
これは単なる一時ファイルだったので、ディスクから削除することができます。
path_array
最後に、関数の実行結果として収集したパスの配列を返すことができます。
)
これは関数なので、呼び出す必要があります。パラメータはないので、() のみを付けて呼び出します。
env_paths = GetEnvironmentPaths()
変数の env_paths
に、Windows で設定された環境パスの配列が含まれます。
同じメソッドを使用して、環境の TEMP パス名、ハード ディスク ドライブの名前などの OS 関連の他のデータにアクセスするスクリプトを開発することができます。
戻る