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

MENU

  • node批量修改文件名
  • 大小驼峰与符号之间的相互转换


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

你可能感兴趣的:(JavaScript,web前端,node,前端,javascript,node.js,web)