copyFileならファイルはコピーできるけれど・・・
ディレクトリごと丸々コピーしてくれないよね~~・・・
ということで、
Maxscriptでディレクトリごとコピーするには?
pythonを使う方法と、コマンドを使う方法2つ。
ほかに考えられるのは・・・。
たとえばコピーを実行するjsを書いたファイルをコマンドで実行させるとか?
ですかね~。
fromPath = "D:\\test"; toPath = "D:\\test_copy"; -- ファイルであればcopyFileで問題なし ただし事前にコピー先消しておくこと -- copyFile fromPath toPath; /** * pythonを使う shutil.copytreeは既にディレクトリがあるとコピー失敗する * distutilsはコピーしたものの一覧を返してくれる */ function CopyDirByPy fromPath toPath = ( if (doesFileExist toPath) then ( distutils = python.Import("distutils.dir_util"); distutils.copy_tree fromPath toPath; ) else ( shutil = python.Import("shutil"); shutil.copytree fromPath toPath; ) ) /** * コマンドとxcopyを使う */ function CopyDirByCmd fromPath toPath = ( -- 上書きでなく完全一致させるならrobocopyを使っちゃう cmd = "echo D| xcopy /Y /E \"" \ + fromPath \ + "\" \"" \ + toPath \ + "\""; HiddenDOSCommand cmd donotwait:false; ) -- CopyDirByPy fromPath toPath; CopyDirByCmd fromPath toPath;
pythonの場合、shutil か distutils.copy_tree を使う。
shutilの場合は既にコピー先にディレクトリがあった場合失敗するので
変わりにdistutils.copy_treeを使う。
shutil一本でいくなら、事前にディレクトリをまるっと削除しておく必要がある。
で、
ぶっちゃけ上書きどーん!
みたいな感じで行きたかったので
コマンドでxcopyを使ってみた。
xcopyをrobocopyに変えればさらに堅牢なコピーが出来ると思う。
これもしかしたらMayaでも同じ方法でいけるんでねーか?
ということで、今日のメモでした~。