node文件批量重命名的方法示例
ist
本篇文章主要介绍了node文件批量重命名的方法示例,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
在一个实际需求中,需要对一批文件(如:文本、图片)进行重命名,按照数字编号。正好借此熟悉了一下node的fs文件操作,写了一个批量修改文件名的脚本。 需求 现有以下图片文件 需要批量修改文件名称,变为统一前缀名称并且自增索引,修改后效果 最简单的人力操作就是逐个文件重命名,但本着DRY(Don't repeat yourself)原则,还是写一个node脚本搞定。 研究 node中要进行文件操作需要了解一下fs模块 在fs模块中有同步和异步两种方式 读取文件 fs.readFile('test.txt', 'utf-8' (err, data) = { if (err) { throw err; console.log(data); let data = fs.readFileSync('test.txt'); console.log(data); 异步读取文件参数:文件路径,编码方式,回调函数 写入文件 fs.writeFile('test2.txt', 'this is text', { 'flag': 'w' }, err = { if (err) { throw err; console.log('saved'); }); 写入文件参数:目标文件,写入内容,写入形式,回调函数 flag写入方式: r:读取文件 创建目录 fs.mkdir('dir', (err) = { if (err) { throw err; console.log('make ess'); }); dir为新建目录名称 读取目录 fs.readdir('dir',(err, files) = { if (err) { throw err; console.log(files); }); dir为读取目录名称,files为目录下的文件或目录名称数组 获取文件信息 fs.stat('test.txt', (err, stats)= { console.log(stats.isFile()); //true }) 获取文件信息后stats方法: if (args.length === 0 || args[0].match('--help')) { console.log('--help\n \t-src 文件源\n \t-dist 文件目标\n \t-n 文件名\n \t-i 文件名索引\n'); return false; args.forEach((item, i) = { if (item.match('-src')) { src = args[i + 1]; } else if (item.match('-dist')) { dist = args[i + 1]; } else if (item.match('-n')) { filename = args[i + 1]; } else if (item.match('-i')) { index = args[i + 1]; fs.readdir(src, (err, files) = { if (err) { console.log(err); } else { fs.exists(dist, exist = { if (exist) { copyFile(files, src, dist, filename, index); } else { fs.mkdir(dist, () = { copyFile(files, src, dist, filename, index); function copyFile(files, src, dist, filename, index) { files.forEach(n = { let readStream, writeStream, arr = n.split('.'), oldPath = src + '/' + n, newPath = dist + '/' + filename + index + '.' + arr[arr.length - 1]; fs.stat(oldPath, (err, stats) = { if (err) { console.log(err); } else if (stats.isFile()) { readStream = fs.createReadStream(oldPath); writeStream = fs.createWriteStream(newPath); readStream.pipe(writeStream); index++; 效果 总结 node提供了很多模块可以帮助我们完成不同需求的功能开发,使javascript不仅仅局限与浏览器中,尝试自己编写一些脚本有助于对这些模块的理解,同时也能提高办公效率。 以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持凡科。 |