外部コマンドおよびプログラムの実行
MAXScript には、外部プログラムを実行するためのメソッドがいくつかあります。
DOSCommand <command_string>
DOS コマンドを文字列として取得し、システムに送って実行します。
この関数を使って他のプログラムを起動したり、シーン内のすべてのマテリアル テクスチャやイメージ ファイルをを収集して 1 つのフォルダに格納するなどといったタスクを実行することができます。
この関数は、実行されたシステム コマンドによって返されるステータス結果の整数を返します。
例:
|
DOSCommand "delete c:\\temp\\foo.dat"
DOSCommand ("copy " + source_file + " " + dest_folder)
|
ShellLaunch <filename_string> <parameters_string>
ShellLaunch() は、Windows 上で指定されたファイルをダブルクリックする動作をエミュレートします。
ファイル名を ShellLaunch に渡すと、自動的に Windows シェルで実行されます。
例:
|
ShellLaunch "E:\\tests\\lookup.html" ""
|
既定値の Web ブラウザを起動して lookup.html を表示します。
|
filenameextensionis が <filename_string> に指定されていない場合、Windows は実行ファイルの指定のディレクトリを検索します。ディレクトリが指定されていない場合、Windows は Path 環境変数のパスで実行ファイルを検索します。
例:
|
shellLaunch "e:/program files/ucalc/ucalc" ""
|
指定されたディレクトリの ucalc.exe ファイルを実行します。
|
<parameters_string> は、コマンド ライン パラメータとして起動したアプリケーションに渡されます。
例:
|
shellLaunch "e:/t.avi" "/play /loop"
|
.avi ファイルに関連付けられているアプリケーションを起動し、 /play および /loop をコマンド ライン パラメータとして渡します。
|
指定されたファイル形式に登録されている既定値のアプリケーションを使用してファイルを開くのではなく、ファイルを開くために起動するアプリケーションを 1 つ目の引数として渡し、開くファイルを
2 つ目の引数として渡します。このようにすると、2 つ目の引数は、1 つ目の引数によって指定されたアプリケーションに対するパラメータとして渡されます。
例:
|
ShellLaunch "iexplorer.exe" @"c:\temp\report.html"
|
ページ report.html を、Internet Explorer で開きます。
|
ShellLaunch "firefox.exe" @"c:\temp\report.html"
|
この場合は、Mozilla Firefox で同じページを開きます。
|
同じ方法を使用して、 Windows Explorer で特定のパスに移動することができます。
例:
|
ShellLaunch @"c:\windows\" ""
ShellLaunch "explorer.exe" @"c:\windows"
|
いずれの式でも、Windows ルート フォルダを Windows Explorer で開きます。
|
ShellLaunch "explorer.exe" "/e,/select,\"c:\\windows\\notepad.exe\""
|
上の式では、Windows ルート ディレクトリにあるファイル notepad.exe を Windows Explorer で開きます。
|
HiddenDOSCommand <command string to execute> [ startpath:unsupplied] [ prompt:unsupplied] [ donotwait:false] [ ExitCode:&variable]
[AVG] HiddenDOSCommand() は DOSCommand() のように見えますが、 ShellLaunch() のように機能します。隠しウィンドウ内で DOS コマンドを実行します。
startpath:
コマンドの開始フォルダを設定します。
3ds Max 2010 より前のバージョンでは、このオプション引数を省略すると関数が失敗していました。3ds Max 2010 ではこれが修正されました。
prompt:
Max プロンプト ライン(ビューポートの直下)に表示されるプロンプトを設定します。これを変更しない場合は、コマンド文字列が表示されます。
donotwait:
コマンドの実行中にコントロールを MAXScript に戻すか、コマンドの完了まで待機するかを決定します。既定値は false で、コマンドが完了するまで MAXScript
の実行をブロックします。
ExitCode:
donotwait: が指定されていない場合や false の場合にコマンドの実行が成功すると、コマンドの終了コードは指定された変数に整数値として書き込まれます。終了コード 0 は、このコマンドがエラーなしで実行されたことを意味し、ゼロ以外のコードは通常、エラーが発生したことを意味します。3ds Max 2010 以降 で使用可能です。
注:
通常、文字はコンソールに出力されます。この出力が重要で、保存しておきたい場合は、すべての出力をリダイレクトしてファイルに生成されるようにする必要があります。
例:
|
HiddenDOSCommand "dir > %temp%\\hiddencmdout.tmp" startpath:"c:\\"
|
cmd = "echo The time is " + localTime + " >> %temp%\\hiddencmdout.tmp"
HiddenDOSCommand cmd startpath:"c:\\"
|
HiddenDOSCommand "notepad %temp%\\hiddencmdout.tmp "prompt:"Waiting for Notepad to exit" startpath:"c:\\"
|
HiddenDOSCommand "del hiddencmdout.tmp" donotwait:true startpath:"c:\\"
|
makeDir "C:\\doscmdtest\\"
str = "rmDir C:\\doscmdtest\\"
hiddendoscommand str startpath:"$max" exitCode:&exitcode
exitcode --> 0
hiddendoscommand str startpath:"$max" exitCode:&exitcode
exitcode --> 2 (error since directory does not exist anymore)
|
--(Source for HiddenDOSCommand provided by Mike BiddleCombe)
|