本文介绍如何利用Node.js批量替换文件夹内的图片文件,同时保持原有文件名不变。通过对比使用child_process执行ls命令与glob模块两种方案,展示如何读取源图片并写入目标目录,解决手动替换易出错、效率低的问题,提供完整的代码实现与效果演示。
Node.js批量替换图片且保留原文件名方法
场景描述:在文件夹A中存有大量图片文件,现需使用另一张指定图片逐一替换这些图片,但要求替换后的文件名与原文件名保持一致。
传统手工操作方式如下:
1)在浏览器中打开目标图片;2)执行另存为操作;3)选择目标文件夹;4)定位到具体图片;5)执行替换;6)确认操作。
随后需重复步骤2)至6)处理其余图片。此过程繁琐且容易因疏忽导致漏换或重复替换。

鉴于手动操作的低效性,采用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实现批量图片替换并保持文件名不变的具体方法,供读者参考与实践。