关于 MAXScript 获取全部文件

MAXScript 官方文档里关于获取文件夹下所有文件的方法

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"

测试后发现无法获取单个文件夹内的文件,比如"C:/temp"下只有文件"1.ms","2.ms"就无法获取.

解决办如下

fn getFilesRecursive root pattern =

(

dir_array = GetDirectories (root+"/*")

for d in dir_array do

  join dir_array (GetDirectories (d+"/*"))

my_files = #()

if dir_array.count == 0 do append dir_array (root + "\\")

for f in dir_array do

  join my_files (getFiles (f + pattern))

my_files

)

这样就可以了,如果搜索目录内没有其他文件夹,那么就搜索该目录内的文件.

再或者,收集指定目录及目录内所有子目录的文件.

fn getFilesRecursive root pattern =

(

dir_array = GetDirectories (root+"/*")

for d in dir_array do

  join dir_array (GetDirectories (d+"/*"))

my_files = #()

append dir_array (root + "\\")

for f in dir_array do

  join my_files (getFiles (f + pattern))

my_files

)

 

你可能感兴趣的:(script)