外部ファイル メソッド

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

getFiles <wild_card_filename_string> recurse:<boolean> 

与えられたワイルドカードのパス名と一致するファイル名の配列を返します。recurse が true として指定されている場合は、指定したディレクトリ以降のディレクトリを再帰的に検索します。既定値は false です。

例:

次のコードは、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> recurse:<boolean>  

与えられたワイルドカードのディレクトリ パス名と一致するディレクトリ パスの配列を返します。recurse が true として指定されている場合は、指定したディレクトリ以降のディレクトリを再帰的に検索します。既定値は false です。

スクリプト

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!
<boolean>removeDir <directory_path_string> 

指定したディレクトリを削除します。ディレクトリが削除された場合は、true を返します。

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 関数は、指定された個々のアトリビュートの状態を設定し(その他のアトリビュートには何も行いません)、設定操作が成功した場合は true、成功しなかった場合は false を返します。

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

#readOnly, #hidden, #system, #directory, #archive, #normal, #temporary, #sparseFile, #reparsePoint, #compressed, #offline, #notContentIndexed, #encrypted, #integrityStream, #virtual, #noScrubData, #recallOnOpen, #pinned, #unpinned, #recallOnDataAccess
getFileAttributeNames()

すべての有効なファイル アトリビュート名のリストを返します。ファイル アトリビュートの詳細については、ファイル アトリビュートの定数に関する Microsoft のドキュメントを参照してください。

getFileAttributes <filename_string>

指定したファイルに設定されたファイル アトリビュートのリストを返します。

例:

f = (getDir #maxroot)
getFileAttributes f
--> #(#directory)
isFileAttributeSettable <name>

指定したアトリビュート name が設定できる場合は true を返します。

例:

isFileATtributeSettable #archive
-->true
isFileAttributeSettable #directory
-->false
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: <boolean> 

指定されたファイルが存在し、指定されたセキュリティ アトリビュートが設定されている場合は 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'!"
getEncoding <filename_string>

: 指定されたテキスト ファイルの文字エンコーディングを返します。指定されたテキスト ファイルが見つからない場合や読み取れない場合は、#Unknown を返します。3ds Max 2022.2 Update 以降で使用可能です。

有効な戻り値は次のとおりです。

#ANSI
#ASCII
#UTF7_With_BOM
#UTF7
#UTF8_With_BOM
#UTF8
#UTF16_LE_With_BOM
#UTF16_BE_With_BOM
#UTF16_LE
#UTF16_BE
#UCS4_LE_With_BOM
#UCS4_BE_With_BOM
#UCS4_LE
#UCS4_BE
#Unknown

filename = @"C:\Program Files\Autodesk\3ds Max 2022\en-US\3dsMax.ini"
getEncoding filename
--> #UTF8_With_BOM