fs.rename回调函数未在nodejs文件系统中执行



如果目录名称中包含空格,我将尝试重命名这些目录。它正在正确地重命名,但在重命名后,定义的回调函数从未被调用。

我在下面的递归函数,其中文件系统的fs完成目录树

function renameDir(dirs){
dirs.forEach(function(e){
if(e.name.match(/s+/g)){
var cname = e.name.replace(/s+/g,'_');
var cpath = e.path.replace(e.name,cname);
fs.rename(e.path,cpath,function(err,data){
if(err) console.log(err)
else{
console.log('success');
e.path = cpath;
e.name = cname;   
}
});
}
var nested = cDT(e.path)
if( nested.children && (nested.children.length > 0) ) renameDir(nested.children);
});
}

使用此代码和路径应取决于您的文件夹结构

'use strict';
const [fs, path] = [require('fs'), require('path')];
fs.readdir(__dirname, (err, data) => {
data.map(d => {
if (d.includes(' ')) {
let name = d.replace(/ /g, '_');
fs.renameSync(path.resolve(__dirname, d), path.resolve(__dirname, name));
}
})});

最新更新