小仙女项目多种因素导致需要批量修改文件,百度了解了bat命令,便捷的操作本地文件,于是学习一下,博客当做记录文档,方便以后查看。
1 .bat方法 :利用ren命令修改文件名称
- 在要修改的文件目录下shift+鼠标右键,弹出来的列表中选择打开命令行(win10中可能没有这个只有Powershell效果一样,单击就行)如下图:
输入”dir /b>rename.xls”,直接回车就行,代码的意思是将目录下的文件名称输出到一个excal中,excal名字是rename。 - 打开excal ,内容如下:
上边的名称是我目录下的文件名称,删除最后一个excal名称 - 这一步是编写你修改后想要的名称,如果只是简单地递增可以直接利用excal编写,如果是复杂的变化,可以粘到记事本中利用正则表达式替换:
想要的文件名称编辑好后可以进到下一步 - 接下来就是拼接.bat命令 将第一列和第二列合并
- 然后和第三步一样,按住右下角向下拉,效果如图:
- 然后创建bat文件,在同目录下新建一个文件修改后缀名称为.bat右键编辑,将excal第三列复制到bat文件中。
- 然后保存,关闭编辑页面。双击运行.bat文件。
2. node本地文件编辑
- 由于对excal操作的不熟悉,导致只能重命名简单地文件名称,甚至后缀名称也不好修改。后来看到了张鑫旭大牛的博客。了解到了使用node的修改的方式(对于我个人来说对js的熟练度比对excal的熟练度高,所以对我来说这种方式比较简单,如果是excal比较熟练可能.bat方式更好些)。
- 环境要求:node环境 npm安装“fs”模块。
- 新建test.js文件,进入编辑:
var fs = require("fs");
// 现在我们要关心的是'icons'文件夹
// 我们不妨用变量表示这个文件夹名称,方便日后维护和管理
var src = 'image';
// API文档中中找到遍历文件夹的API
// 找到了,是fs.readdir(path, callback)
// 文档中有叙述:
// 读取 path 路径所在目录的内容。 回调函数 (callback) 接受两个参数 (err, files) 其中 files 是一个存储目录中所包含的文件名称的数组
// 因此:
fs.readdir(src, function(err, files) {
// files是名称数组,因此
// 可以使用forEach遍历哈, 此处为ES5 JS一点知识
// 如果不清楚,也可以使用for循环哈
Date.prototype.Format = function (fmt) { //此处是我时间格式化用,不是修改文件必要
var o = {
"M+": this.getMonth() + 1, //月份
"d+": this.getDate(), //日
"h+": this.getHours(), //小时
"m+": this.getMinutes(), //分
"s+": this.getSeconds(), //秒
"q+": Math.floor((this.getMonth() + 3) / 3), //季度
"S": this.getMilliseconds() //毫秒
};
if (/(y+)/.test(fmt)) fmt = fmt.replace(RegExp.$1, (this.getFullYear() + "").substr(4 - RegExp.$1.length));
for (var k in o)
if (new RegExp("(" + k + ")").test(fmt)) fmt = fmt.replace(RegExp.$1, (RegExp.$1.length == 1) ? (o[k]) : (("00" + o[k]).substr(("" + o[k]).length)));
return fmt;
}
files.forEach(function(filename,i) {
// 下面就是文件名称重命名
// API文档中找到重命名的API,如下
// fs.rename(oldPath, newPath, callback)
// 下面,我们就可以依葫芦画瓢,确定新旧文件名称:
var oldPath = src + '/' + filename, newPath = src + '/' + new Date().Format('yyyyMMdd') + "_10" + i + "." + filename.split(".")[1];
// // 重命名走起
console.log("新:"+oldPath+"老:"+newPath)
fs.rename(oldPath, newPath, function(err) {
if (!err) {
console.log(filename + '下划线替换成功!');
}
})
});
});
- 编辑好直接如.bat命令第1步打开命令行,输入node test.js回车运行:
- 毕竟是js语法,相对来说熟悉点,所以感觉还可以。node了解的还是太少,这算是基本操作都不知道。比较尴尬。