3dsMaxの操作ではなく、
とあるフォルダ内のファイルをリネームをするためのMAXScript。
▼やりたい事
桁の揃っていない連番名のファイルがある。連番の桁を揃えたい。
以下の様になってほしい。
1.png → 0001.png
10.png → 0010.png
100.png → 0100.png
▼経緯
bean3Dプリンター用のスライス画像を用意していた。
ファイル名の連番桁数を揃えるため、リネームソフトを使用していたが、
ファイル名を適切な順番通りにリネームしてくれず、プリントに失敗してしまった。
MAXScriptで簡単なファイルの操作ができた気がしたので調べた。
スクリプトを作った後、
リネームソフトの新しいバージョンを試したら問題は出なかったが、
せっかく作ってしまったのでメモとしてブログに残す事にした。
▼処理の概要
指定したフォルダ内のPNGファイルを全部取得して、
forループで一括処理をする。
IF文を使い、文字数により処理を分ける。
もし、ファイル名の文字数が1なら、ファイル名の先に0を3つ付ける。
もし、ファイル名の文字数が2なら、ファイル名の先に0を2つ付ける。
もし、ファイル名の文字数が3なら、ファイル名の先に0を1つ付ける。
▼MAXScript
hako = getFiles "C:\\Users\\ngroku\\Desktop\\フォルダ\\*.png" basyo = getFileNamePath hako[1] for i in hako do( na = getfilenamefile i if na.count==3 do( na = "0" + na ) if na.count==2 do( na = "00" + na ) if na.count==1 do( na = "000" + na ) kaimei = basyo + na + ".png" renameFile i kaimei )
上のMAXScriptを日本語にすると以下の様な感じになる。
指定した場所のPNGファイルを全て取得して、変数hakoに入れる。 パスを変数basyoに入れる。※パスとはファイルのある場所の事 for in ループ( ※変数hakoの中身一つずつに対して以下の処理を行う ファイル名を変数naに入れる。 IF文。もし変数na(の中身)が文字数3なら、変数naの中身に0を一つ足す。 IF文。もし変数na(の中身)が文字数2なら、変数naの中身に0を二つ足す。 IF文。もし変数na(の中身)が文字数1なら、変数naの中身に0を三つ足す。 basyo(パス)+変数na(名前)+.png(拡張子)を変数kaimeiに入れる。 ファイル名を変数kaimeiの中身でリネーム処理。 )
これでファイル名は以下の様にリネームされる。
1.png → 0001.png
10.png → 0010.png
100.png → 0100.png
▼参考リンク
3ds Max 2019 ヘルプ: 外部ファイル メソッド
3ds Max 2019 ヘルプ: ファイル名の解析
3ds Max 2019 ヘルプ: 文字列値