读者您好!
有一天想看cocosCreator的js源码,于是下载解压到手机上了,但是手机打开不了.js文件,想看还得动手重命名为.txt,如果一个个重命名比较费劲,所以我就花了点时间写了个批处理的脚本。
废话少说代码如下:
// create by Blade on 2019-3-10
var fs = require("fs")
var path = require("path")
// console.log("当前执行路径:"+process.cwd())
/*
** dir 路径名
** 源文件后缀名,例如”.js“
** 目标文件后缀名,例如”.txt“
*/
var renameFile = function(fileName,sourceExtname,targetExtname){
//
// dirname路径名
var dirname = path.dirname(fileName);
// basename文件名
var basename = path.basename(fileName);
var names = basename.split(".");
console.log("basename:"+basename+",dirname:"+dirname)
// 目标文件
if(names.length>2||names.length!=2||names[1]!=sourceExtname.slice(1)){
console.log("非"+sourceExtname+"类文件不执行重命名操作!fileName:"+fileName);
return;
}
// extname后缀名
var extname = path.extname(basename);
if(extname == sourceExtname){
// 要重命名的文件的路径
var destName = dirname+"/"+names[0]+targetExtname;
fs.rename(fileName,destName,function(err){
if(err){
console.error("文件"+fileName+"重命名失败,错误信息:"+JSON.stringfy(err));
return;
}
else{
console.log("文件"+basename+"重命名完成,路径:"+dirname);
}
});
}
}
// 路径或文件path是否存在
var exists = function(path){
return fs.existsSync(path);
}
// 判断当前路径path是否是一个文件
var isFile = function(path){
return exists(path)&&fs.statSync(path).isFile();
}
// 判断path是否是一个文件夹
var isDir = function(path){
return exists(path)&&fs.lstatSync(path).isDirectory();
}
/*
** dir 路径名
** 源文件后缀名,例如”.js“
** 目标文件后缀名,例如”.txt“
*/
var renameDir = function(dir,sourceExtname,targetExtname){
console.log("dir:"+dir)
fs.readdir(dir,function(err,files){
if(err){
console.log("目录错误:dir:"+dir);
return;
}
for(var i =0,len = files.length;i<len;i++){
var fileName = dir+files[i];
console.log("fileName:"+fileName);
var basename = path.basename(fileName);
var names = basename.split(".")
// names.length == 1 的判断是为了不检查隐藏文件
if(names.length==1){
if(isFile(fileName)){
renameFile(fileName,sourceExtname,targetExtname);
}
else if(isDir(fileName)){
console.log("文件夹:"+fileName);
renameDir(fileName+"/",sourceExtname,targetExtname)
}
else{
}
}
}
})
}
// 要重命名的路径
var targetPath = "/Users/Blade/cocosCreatorEngin/";
// 执行批处理命令 把所有.js文件重命名为.txt文件
renameDir(targetPath,".js",".txt");
我是用nodejs环境运行的,在终端中输入:node fileRenameBatch.js