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でも同じ方法でいけるんでねーか?
ということで、今日のメモでした~。
