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

fs.rename callback function not executing in nodejs filesystem

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

我的递归函数在下面,其中 fs 用于 文件系统 complete-directory-tree.

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));
    }
})});