外部ファイル メソッド

次のメソッドは、外部ファイルおよびディレクトリへのアクセスを提供します。

   

getFiles <wild_card_filename_string> 	 

与えられたワイルドカードのパス名と一致するファイル名の配列を返します。

例:

次のコードは、c:¥foo内のすべての .max シーン ファイルの配列を取得して、ループ処理で配列のファイルを開き、各ファイル内のオブジェクトを出力します。

files = getFiles "c:\\foo\\*.max"
for f in files do (loadMAXFile f; print objects)

getFiles() は、ファイル またはファイル パターンが存在するかどうかを判断するときにも使用できます。

次の関数は指定されたファイル名またはパターンが存在する場合に true を返します。

fn existFile fname = (getfiles fname).count != 0

単一のファイルのみをチェックし、ワイルドカードパターンをサポートしない「doesFileExist()」も参照してください。

   

getDirectories <wild_card_directory_name_string>   

与えられたワイルドカードのディレクトリ パス名と一致するディレクトリ パスの配列を返します。

スクリプト:

fn getFilesRecursive root pattern =
(
dir_array = GetDirectories (root+"/*")
for d in dir_array do
  join dir_array (GetDirectories (d+"/*"))
my_files = #()
for f in dir_array do
  join my_files (getFiles (f + pattern))
my_files
)
--get all .ms files from the folder c:/temp
--and all its subfolders:
getFilesRecursive "c:/temp" "*.ms"

   

makeDir <directory_path_string> all:<boolean> 

与えられた名前を使って新しいディレクトリを作成します。

パスが問題なく作成されたか、既に存在する場合には true を返します。

引数が無効なパスであるか、書き込み権が不十分なためにパスが作成されなかった場合には false を返します。

オプションの all: キーワード引数が true に設定されると(3ds Max 9 以降の既定値。3ds Max 8 での既定値は false )、パスで指定されたすべてのサブディレクトリ レベルが作成されます(存在しない場合)。

MAXScript では、ディレクトリを削除するためのメソッドは提供されていません。回避策は HiddenDOSCommand() の最後の例を参照してください。

makeDir @"c:\temp\test\deleteme\if\you\can" all:false
false --unless the path already exists up to the \you folder
makeDir @"c:\temp\test\deleteme\if\you\can" all:true
true --creates all the folders listed in the path
makeDir @"c:\temp\test\deleteme\if\you" all:true
true --even if the previous call had created the path, still ok
makeDir @"a:\temp"
false --unless you still have a Floppy drive and a disk for it!

   

deleteFile <filename_string> 

指定されたファイルを削除します。

ファイルが MAXScript 内で開かれている場合は失敗します。開かれているファイルを閉じるには、ASCII ストリーム、バイナリ ストリーム用の適切な close()メソッドを使用するか、ローカル スコープが原因でハンドルにアクセスできない場合には gc() を使用して手動ガベージ コレクションを呼び出します。

実際のファイルについてのみ動作し、 makeDir() を使用して作成されたディレクトリには使用できません。ディレクトリを削除する方法については、HiddenDOSCommand() の最後の例を参照してください。

成功した場合は true 、失敗した場合は false を返します。

   

renameFile <old_filename_string> <new_filename_string> 

ファイル名を新しいファイル名に変更します。

これは、ディレクトリ間でファイルを移動するときにも使用できます。

新しい名前のファイルが既に存在していたり、名前を変えようとしているファイルが MAXScript 内で開かれている場合、処理は失敗します。

成功した場合は true を、失敗した場合は false を返します。

   

copyFile <existing_filename_string> <target_filename_string> 

既存のファイルを新しいファイルにコピーします。

既存のファイルが MAXScript 内で開かれている場合、ターゲット ファイルを作成できない場合、またはターゲット ファイルがすでに存在している場合は失敗します。後者の場合は、 deleteFile() を使用して最初に既存のターゲット ファイルを削除することができます。

成功した場合は true を、失敗した場合は false を返します。

   

getFileSize <filename_string> 

指定のファイルのサイズをバイトで返します。

ファイルを見つけられない場合は 0 (ゼロ)を返します。

例:

GetFileSize (getDir #maxRoot + "\\3dsmax.exe")
--> 9881600

   

getFileAttribute <filename_string> <attribute> 
setFileAttribute <filename_string> <attribute> <boolean> 

ファイルに関連付けられているアトリビュートを取得/設定します。

get 関数は、指定されたアトリビュートの状態に基づいて true または false を返します。

set 関数は、指定された個々のアトリビュートの状態を設定します(その他のアトリビュートには何も行いません)。

有効な <attribute> 値は次のとおりです。

#readOnly #hidden #system #directory #archive #temporary #normal 

   

getFileModDate <filename_string> 

指定されたファイルの修正日を文字列で返します。例: "1/29/99 1:52:05 PM"

   

getFileCreateDate <filename_string> 

指定されたファイルの作成日を文字列で返します。

   

getFileVersion <filename_string> 

指定されたファイルのファイルおよび製品バージョンを返します。ファイル内でデータが指定されていないと、「不明」が返されます。通常、このデータは実行ファイルおよびアプリケーション拡張ファイル(.dll など)に対して指定されます。

例:

GetFileVersion (getDir #maxRoot + "\\3dsmax.exe")
--> "12,0,0,91 12,0,0,91"

   

getFileSecurityInfo <file_name> <attribute> testFileAttribute: <bool> 

指定されたファイルが存在し、指定されたセキュリティアトリビュートが設定されている場合は true を返します。ここで、<attribute>は #read #write #execute #all のいずれかです。

<file_name>がディレクトリで、かつ<attribute>が #write または #all であり、ディレクトリのセキュリティ属性が書き込み可能であることを示している場合には、このメソッドはこのディレクトリに一時ファイルを作成することによって、このディレクトリが実際に書き込み可能であることを確認しようとします。

testFileAttribute: false であるか指定されていない場合、または<file_name>にディレクトリが指定されている場合は、ファイルのファイル属性はテストには含まれません

testFileAttribute: true で<file_name>にファイルが指定されている場合は、ファイル属性(読み出し、書き込み、実行)はセキュリティ属性と AND 処理されます。

3ds Max 2010 以降で使用可能です。

   

isDirectoryWriteable <dir_name> 

指定されたディレクトリが存在し、そのディレクトリに書き込める場合は、 true を返します。

3ds Max 2010 以降で使用可能です。

   

getMAXIniFile() 

3ds Max 6 以降 では、現在の 3dsmax.ini ファイルを文字列で返します。ini 設定をレジストリ内に保存する製品の場合、このメソッドは undefined を返します。INI ファイル キーへのアクセス も参照してください。

その他の参考例:

for f in getFiles "3dsmax\\maps\\*.jpg" do deleteFile f
for d in getDirectories "D:\\foo\\*" do
for f in getFiles (d + "*.*") do
copyFile f ("C:\\temp\\" + getFilenameFile f + getFilenameType f)
if (getFiles "foo*.max").count == 0 do
print "No Files Match Pattern 'foo*.max'!"

関連事項