web前端之node批量修改文件名、大小驼峰与符号之间的相互转换、把小驼峰文件名改为短横线、readdir、stat、rename

204 篇文章 5 订阅
3 篇文章 0 订阅


node批量修改文件名

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

/**
 * 批量修改文件名
 * @param {String} folderPath 
 */
function batchModifyFileName(folderPath = '') {
    // 获取文件夹中的文件列表
    fs.readdir(folderPath, (err, files) => {
        if (err) return alert(`无法读取文件夹: ${JSON.stringify(err)}`);

        // 遍历文件列表
        files.forEach((file) => {
            const filePath = path.join(folderPath, file);

            // 检查文件是否为目录
            fs.stat(filePath, (err, stats) => {
                if (err) return alert(`无法获取文件状态: ${JSON.stringify(err)}`);

                // 只处理文件,忽略目录
                if (stats.isFile()) {
                    // 将小驼峰改为横杠
                    const newFileName = file.replace(/([a-z])([A-Z])/g, '$1-$2').> toLowerCase();
                    // 构建新的文件路径
                    const newFilePath = path.join(folderPath, newFileName);

                    // 重命名文件
                    fs.rename(filePath, newFilePath, (err) => {
                        if (err) {
                            console.error('无法重命名文件:', err);
                        } else {
                            console.log(`重命名文件成功: ${file} <=> ${newFileName}`);
                        }
                    });
                }
            });
        });
    });
}

// E:/mzkj/mzkj/project/muzi-device-admin/src/assets/icons/svg
// E:/mzkj/mssj/aWeb/demo/batchModifyFileName
batchModifyFileName('E:/mzkj/mzkj/project/muzi-device-admin/src/assets/icons/svg');

以上代码只能在node环境下运行,在浏览器环境中运行报错。
node index.js


大小驼峰与符号之间的相互转换

/**
 * 大小驼峰转为符号
 * @param {String} name 
 * @param {String} str 
 * @returns 
 */
function lettersToSymbol(name = '', str = '') {
    return name.replace(/([a-z])([A-Z])/g, `$1${str}$2`).toLowerCase()
}

/**
 * 符号转为大小驼峰
 * @param {String} name 
 * @param {String} str 
 * @param {Boolean} isBig 
 * @returns 
 */
function symbolsToLetters(name = '', str = '-_|$#', isBig = false) {
    let regex = new RegExp(`[${str}]([a-z])`, "g"),
        result = name.replace(regex, (match, letter) => letter.toUpperCase());

    if (isBig) result = result.charAt(0).toUpperCase() + result.slice(1);

    return result;
}

console.log(lettersToSymbol('myVariableName', '|'));
// my|variable|name
console.log(lettersToSymbol('MyVariableName', '_'));
// my_variable_name
console.log(symbolsToLetters('my-variable-name', '-', true));
// MyVariableName
console.log(symbolsToLetters('my_variable_name'));
// myVariableName
console.log(symbolsToLetters('my|variable|name'));
// myVariableName
console.log(symbolsToLetters('my$variable#name', undefined, true));
// MyVariableName
  • 15
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 11
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 11
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值