You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何使用Node JS批量重命名文件夹中的文件?

解决Node.js批量按数组顺序重命名文件夹文件的问题

原代码的问题分析

  1. 路径错误:fs.readdirSync('./imgs')返回的是文件名而非完整路径,直接传入renameSync会导致Node在当前工作目录查找文件,而非目标文件夹。
  2. 无效赋值:fs.renameSync没有返回值,给filesNames[i]赋值完全多余。
  3. 扩展名丢失风险:如果你的标题数组不带文件扩展名,重命名后文件会丢失格式,无法正常打开。
  4. 无错误处理:单个文件重命名失败(如权限不足、文件已存在)会导致整个脚本崩溃。

正确实现代码

const fs = require('fs');
const path = require('path');

// 你的标题数组(确保长度和文件数量一致)
const arrayTitles = [
  `1-name of file`,
  `2-name of file`,
  `3-name of file`
  // ... 剩余288个标题
];

const folderPath = './imgs';
const fileNames = fs.readdirSync(folderPath);

// 先校验文件数量和标题数量是否匹配,避免索引越界
if (fileNames.length !== arrayTitles.length) {
  console.error('错误:文件数量与标题数量不匹配');
  process.exit(1);
}

fileNames.forEach((oldFileName, index) => {
  // 构建原文件的完整路径
  const oldFilePath = path.join(folderPath, oldFileName);
  
  // 提取原文件的扩展名(处理带多个点的文件名,如image.v2.jpg)
  const fileExtension = path.extname(oldFileName);
  
  // 拼接新文件名(保留原扩展名)
  const newFileName = `${arrayTitles[index]}${fileExtension}`;
  const newFilePath = path.join(folderPath, newFileName);
  
  try {
    fs.renameSync(oldFilePath, newFilePath);
    console.log(`重命名成功:${oldFileName} → ${newFileName}`);
  } catch (error) {
    console.error(`重命名失败 ${oldFileName}:`, error.message);
  }
});

关键细节说明

  • 路径处理:使用path.join自动处理不同操作系统的路径分隔符(Windows用\,Linux/macOS用/),避免手动拼接路径的错误。
  • 扩展名保留:通过path.extname提取原文件的扩展名,确保重命名后文件格式不变。
  • 错误容错:用try-catch包裹重命名操作,单个文件失败不会终止整个脚本,同时输出错误信息便于排查。
  • 索引匹配:forEach的第二个参数index直接对应标题数组的索引,保证文件和标题按顺序一一对应。

内容的提问来源于stack exchange,提问作者Nicolás Cerdán

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.23 20:22:23