Node.js实现批量图片替换:保持文件名不变的高效方案

作者:星河

时间:2026-10-30

浏览:207

本文介绍如何利用Node.js批量替换文件夹内的图片文件,同时保持原有文件名不变。通过对比使用child_process执行ls命令与glob模块两种方案,展示如何读取源图片并写入目标目录,解决手动替换易出错、效率低的问题,提供完整的代码实现与效果演示。

文章目录

Node.js批量替换图片且保留原文件名方法

场景描述:在文件夹A中存有大量图片文件,现需使用另一张指定图片逐一替换这些图片,但要求替换后的文件名与原文件名保持一致。

传统手工操作方式如下:

1)在浏览器中打开目标图片;2)执行另存为操作;3)选择目标文件夹;4)定位到具体图片;5)执行替换;6)确认操作。

随后需重复步骤2)至6)处理其余图片。此过程繁琐且容易因疏忽导致漏换或重复替换。

Node.js批量替换图片且保留原文件名方法

鉴于手动操作的低效性,采用Node.js脚本处理该任务更为适宜。具体实现代码如下:


var fs=require('fs'), 
  cp=require('child_process');
var url='Moriarty.jpg'
var rs=fs.readFileSync(url,{encoding:'hex',flag:'r'})
var write=(e)=>{ 
 fs.writeFileSync(e,rs,{encoding:'hex',flag:'w'})  
 }
var buf_files=cp.execSync('ls 160906/*.jpg')
var arr_files=buf_files.toString().trim().split(/\s+/)
arr_files.forEach(write)

此外,还可以结合glob库与fs模块完成相同功能,代码示例如下:


var glob=require('glob'),
 fs=require('fs')
var url='Moriarty.jpg'
var rs=fs.readFileSync(url,{encoding:'hex',flag:'r'})
var write=(e)=>{ 
 fs.writeFileSync(e,rs,{encoding:'hex',flag:'w'})  
 }
glob('160906/*.jpg',(err,files)=>{
  files.forEach(write)
 })

运行效果如下图所示:

替换前的原始图片展示:

 Node.js批量替换图片且保留原文件名方法

替换后的新图片展示:(注意图片文件名未发生变化)

Node.js批量替换图片且保留原文件名方法

上述内容即为Node.js实现批量图片替换并保持文件名不变的具体方法,供读者参考与实践。

实用工具推荐

电子包浆

绿化、压缩、噪点和虚拟水印,自由调节做旧程度。

使用 ›
图片压缩

选择画质和输出格式,预览压缩前后的大小。

使用 ›
相关文章