nodejs 实现把某个文件夹下所有文件全部按文件创建时间命名

nodejs 实现把某个文件夹下所有文件全部按文件创建时间命名

话不多说,先上代码,再慢慢解释
打开终端先npm i fs

const fs = require('fs');

let path = 'C:\\Users\\Administrator\\Pictures\\Saved Pictures';//想读取的文件夹的绝对路径
let files = fs.readdirSync(path);//读取该文件夹下的所有文件

//执行遍历
recursiveFiles(0);

//遍历文件先获取每个文件的详情信息,再改名
function recursiveFiles(i) {
    if (i < files.length) {
        let currentFile = files[i];
        let oldPath = path + '\\' + currentFile;
        //获得文件信息
        fs.stat(oldPath, function (err, data) {
            if (err) {
                throw err;
            }
            //这三个时间就看你想以哪个命名了
            var creatTime = new Date(data.ctime).toJSON();  //创建时间
            var updateTime = new Date(data.mtime).toJSON(); //修改时间
            var activeTime = new Date(data.atime).toJSON(); //访问时间
            //将时间格式转换成YYYY-MM-DD HH:MM:SS,需要注意的是文件名称不可以用英文:,所以需要把英文:全部转成中文:
            var date = new Date(+new Date(creatTime) + 8 * 3600 * 1000).toISOString().replace(/T/g, ' ').replace(/\.[\d]{3}Z/, '').replace(/:/g, ':')
			//只是改名不改路径,所有newPath前缀还是用以前的path,如果想放到新的文件夹里,自行配置
            //如果是在原文件名基础前面加时间就执行下面这条
            // let newPath = path + '\\' + date + "_" + currentFile;
            //如果是不要原来文件名,就先取文件类型,然后把时间拼到文件类型前面
            let type = currentFile.lastIndexOf('.') > -1 ? currentFile.substring(currentFile.lastIndexOf('.')) : "";
            let newPath = path + '\\' + date + type;
            //重命名
            fs.rename(oldPath, newPath, (err) => {
                if (err) {
                    throw err;
                }
                i++;
                //打印剩余文件数量
                let remainCount = files.length - i;
                console.log('重命名完成-----还剩' + remainCount + '条');
                recursiveFiles(i);
            });
        })
    } else {
        console.log('全部完成')
        //打印效果
        console.log(fs.readdirSync(path))
    }
}

打开终端运行js,效果如下
在这里插入图片描述

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值