JavaScript实现批量重命名文件

 更新时间:2024年12月12日 10:42:02   作者:Face  
这篇文章主要为大家详细介绍了如何利用JavaScript实现批量重命名文件,文中的示例代码讲解详细,有需要的小伙伴可以跟随小编一起学习一下

批量重命名图片

改下载的图片中的名称时候,感觉一个个修改太麻烦了,就像写个脚本执行一下,顺便多熟悉一下node的fs模块

一次性对某一文件夹下多个图片文件进行名称的修改与调整,不用逐一手动重命名图片,快速更新文件名,执行脚本自动修改图片名

自动“9a9f0a7f89a7.jpg”,之类的图片名为002.jpg

我这里将设置文件重命名为从0 ~ 999,可以根据要命名的图片数量自定义设置。

reName.js代码如下:

const fs = require("fs");
const path = require("path");
// 要修改的文件路径
const folderPath = "./testPicture";
const imgType = ["jpg", "png", "jpeg", "gif", "bmp", "tiff", "ico", "webp"];

let count = 0;
function pad(num, size) {
	let s = num + "";
	while (s.length < size) s = "0" + s;
	return s;
}

fs.readdir(folderPath, (err, files) => {
	try {
		if (err) {
			console.error("读取文件出错", err);
			return;
		}
		files.forEach((file) => {
			// 如果用 path.extname() 获取扩展名,注意名称为空的额外处理
			const ext = file.split(".").at(-1).toLowerCase();		
			if (imgType.includes(ext)) {
				const oldFilePath = path.join(folderPath, file);
				const newFileName = pad(count, 3) + "." + ext;
				const newFilePath = path.join(folderPath, newFileName);
				fs.rename(oldFilePath, newFilePath, (err) => {		
					if (err) console.error("重命名文件出错", err);
				});
				count++;
			}
		});
		console.log(`重命名完成,共重命名 ${count} 个文件`);
	} catch (error) {
		throw new Error(error);
	}
});

如果要修改重命名其他文件,修改imgType中的文件类型执行脚本即可

  • 执行脚本直接使用 node 运行即可node reName.js
  • 运行之前先备份!!!

方法补充

除了上文的方法,小编还为大家整理了一些其他JavaScript重命名文件的方法,有需要的可以了解下

方法一:

'use strict'

let fs = require('fs');
let args = process.argv;
let dist = 'dist';
let src = 'src';
let index = 0;
let ignore = '';

// 目标路径
dist = args[2];
// 名字前缀
src = args[3];
// 递增后缀
index = args[4] || 1;
// ? 忽略的文件
ignore = args[5] || "";

let files = fs.readdirSync(dist);
let sortValue = ['0', '1', '2', '3', '4', '5', '6', '7', '8', '9'];
files.sort(function (a, b) {
    let index = -1;
    for (let i = sortValue.length - 1; i >= 0; i--) {
        index = a.indexOf(sortValue[i]);
        if (index != -1) {
            // console.log("a: ", a, " i: ", i, " index: ", index);
            break;
        }
    }

    if (index == -1) {
        return 0;
    }
    else {
        let aid = parseInt(a.substring(index));
        let bid = parseInt(b.substring(index));
        if (aid == NaN || bid == NaN) {
            return 0;
        }
        else {
            return aid - bid;
        }
    }
});

for (let i = 0; i < files.length; i++) {
    if (ignore !== "" && files[i].indexOf(ignore) === -1) {
        continue;
    }
    let stat = fs.statSync(dist + "\\" + files[i]);
    let runRename = function (stat) {
        if (stat.isFile()) {
            let prefix = dist + "\\";
            let suffix = files[i].substring(files[i].indexOf("."));
            let oldName = prefix + files[i];
            let newName = prefix + src + index + suffix;
            fs.renameSync(oldName, newName);
            index++;
        }
    };
    runRename(stat);
}

方法二:js 批量修改文件名后缀

在需要修改的文件夹除创建一个js文件 ,通过 node .\****.js 运行或在创建一个.bat文件:node .****.js pause 后双击

记得修改dirName

// 引入 fs 文件系统模块
let fs = require('fs')

const dirName = 'mus' // 读取目标文件夹名称
const reg = /(?<=[.])[a-z]+/ // 文件后缀 匹配规则

// 读文件夹,获取文件名列表
let fileList = fs.readdirSync(dirName)

// 过滤出想要的文件类型
let resultList = fileList.reduce((pev, cur) => {
  // 获取后缀
  const curPicType = cur.match(reg)[0]
  if (['mgg', 'flac', 'ogg', 'lrc'].includes(curPicType)) {
    pev.push(cur)
  }
  return pev
}, [])
console.log('文件列表', resultList)

// 循环当前文件名列表,根据需要重写名字
for (let i = 0; i < resultList.length; i++) {
  // 文件完整名称
  const curFileName = resultList[i]
  // 后缀名
  const fileFormat = curFileName.match(reg)[0]
  // 去掉后缀的文件名
  const fileCode = curFileName.split('.')[0]


  // oldPath 原地址
  const oldPath = `./${dirName}/${curFileName}`
  // newPath 目标地址
  let newPath = ''

  // 修改方式
  // 如果想根据不同条件,将文件分别放到不同的文件夹,按需更改 newPath 即可
  if (fileFormat == 'ogg' || fileFormat == 'mgg') {
    newPath = `./${dirName}/${fileCode}.mp3`
  } else {
    newPath = oldPath
  }

  // 确认修改
  fs.rename(oldPath, newPath, (err) => {
    if (err) throw err;
    console.log(`修改成功 -- ${newPath}`);
  })
}

到此这篇关于JavaScript实现批量重命名文件的文章就介绍到这了,更多相关JavaScript重命名文件内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • js 创建书签小工具之理论

    js 创建书签小工具之理论

    书签小工具(Bookmarklets)是一个非常棒的javascript代码小片断伪装成的小应用,它驻留在你的浏览器里并为网页提供额外的功能。这里我们将研究如何从头开始创建一个书签小工具及一些最佳实践的建议。
    2011-02-02
  • js实现仿购物车加减效果

    js实现仿购物车加减效果

    本文主要介绍了js实现仿购物车+ -效果的实例,具有很好的参考价值,下面跟着小编一起来看下吧
    2017-03-03
  • 浅谈js中几种实用的跨域方法原理详解

    浅谈js中几种实用的跨域方法原理详解

    本篇文章主要介绍了js中几种实用的跨域方法原理详解 ,小编觉得挺不错的,现在分享给大家,也给大家做个参考。
    2016-12-12
  • Javascript highcharts 饼图显示数量和百分比实例代码

    Javascript highcharts 饼图显示数量和百分比实例代码

    这篇文章主要介绍了Javascript highcharts 饼图显示数量和百分比实例代码的相关资料,这里附有实例代码,需要的朋友可以参考下
    2016-12-12
  • Javascript如何实现扩充基本类型

    Javascript如何实现扩充基本类型

    这篇文章主要介绍了Javascript如何实现扩充基本类型,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2020-08-08
  • JS控件bootstrap suggest plugin使用方法详解

    JS控件bootstrap suggest plugin使用方法详解

    这篇文章主要介绍了JS控件bootstrap suggest plugin的使用方法,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2017-03-03
  • js取值中form.all和不加all的区别介绍

    js取值中form.all和不加all的区别介绍

    在js里取值,可以用form.xx.value,也可以用form.all.xx.value,那么js取值中form.all和不加all有什么区别呢?下面就为大家详细介绍下
    2014-01-01
  • JavaScript获取本机IP地址三种常用方式

    JavaScript获取本机IP地址三种常用方式

    在浏览器中使用JavaScript获取本机IP地址是不可行的,因为浏览器的安全策略禁止JavaScript访问这样的信息,这篇文章主要给大家介绍了关于JavaScript获取本机IP地址的三种常用方式,需要的朋友可以参考下
    2023-12-12
  • JavaScript 事件属性绑定带参数的函数

    JavaScript 事件属性绑定带参数的函数

    在JavaScript中,为了实现表现和控制相分离,可以通过0级的DOM事件属性或者2级的事件模型来实现,不过这两者在针对某个事件类型调用相应的事件句柄的时候,不能给事件句柄提供参数,也就是说,事件属性的值只能是一个函数引用。
    2009-03-03
  • js获取鼠标点击的位置实现思路及代码

    js获取鼠标点击的位置实现思路及代码

    常用的是 event.clientX和event.clientY分别获取横向的和纵向的位置,但仅使用这个方法是不够的,感兴趣的朋友可以了解本文
    2014-05-05

最新评论