最近做帧动画,美术发过来的美术资源总是一大堆,而且命名总是按照他们喜欢的格式命名,虽然有改名软件,但是还是要在上面点点的,总感觉很是不爽,因此写了一个小程序来批量改名,如果您需要就得改对应参数,废话不多说,直接上代码吧
package
{
import flash.display.Sprite;
import flash.events.Event;
import flash.filesystem.File;
import flash.net.URLLoader;
import flash.net.URLRequest;
/**
* 文件名修改工具
* @author nick
*
*/
public class FilePackge extends Sprite
{
/**
* 加载器
*/
private var _loader:URLLoader = null;
/**
* 文件名路径
*/
private var _folderPath:String = "";
/**
*
* 构造函数
*/
public function FilePackge()
{
//为了方便更改文件夹地址,我将文件地址配成了xml配置档,通过loader进行加载
_loader = new URLLoader();
_loader.addEventListener(Event.COMPLETE,onLoadComplete);
_loader.load(new URLRequest("H:/floderPackage/flieConf.xml"));
}
/**
* 加载完成回调
* @param e
*
*/
private function onLoadComplete(e:Event):void
{
if(_loader != null)
{
_loader.removeEventListener(Event.COMPLETE,onLoadComplete);
}
var xml:XML = XML(_loader.data);
_folderPath = String(xml.fileDir.dir.@url);//文件夹根目录
var file:File = new File(_folderPath);
var fileAry:Array = file.getDirectoryListing();//获取路径下所有文件
for(var i:int = 0;i < fileAry.length;i++)
{
var subFile:File = fileAry[i];
if(subFile.isDirectory)//我这里需要将一个文件夹下所有文件按序编号,所有这个文件必须是文件夹
{
tryChgName(subFile);
}
}
}
/**
* 尝试更改文件名
*
*/
private function tryChgName(file:File):void
{
var fileAry:Array = file.getDirectoryListing();
if(fileAry.length > 0)
{
var subFile:File = fileAry[0];
//这里判断扩展名是否我想改的类型 并且名字是否已经被修改了,如果修改了就不进行遍历了
if(subFile.extension == "png" && subFile.name != "i0.png")
{
for(var i:int = 0;i < fileAry.length;i++)
{
var pngFile:File = fileAry[i];
//原始url
var oldUrl:String = pngFile.url;
//老url 我想有序修改的类型
var newUrl:String = oldUrl.substr(0,oldUrl.lastIndexOf("/") + 1) + "i" + i + pngFile.type;
//以下相当于一个粘贴复制 也是这里的关键
var newFile:File = pngFile.resolvePath(newUrl);
pngFile.copyTo(newFile,true);
//最后一步将原始文件删除
pngFile.moveToTrash();
}
}
}
}
}
}
下面是xml中的配置<fileConf>
<fileDir>
<dir url="file:///H:/nbgame/art/资源/战斗/test" />
</fileDir>
</fileConf>
最后来看看改名效果怎么样吧~
上面的改名前,名字无序
改名后,名字有序了 ,一个简单方便的小程序,希望对各位有点帮助