专栏首页一番码客nodejs实现批量修改文件内容 | 附断更红包

nodejs实现批量修改文件内容 | 附断更红包

本文目录

前言

环境准备思路方法代码展示

前言

一番之前不是有一个网站吗,efonfihgint.imwork.net。但这是个二级域名,很多时候用起来不方便,自主性还是稍差了一点。

所以一番后来买了一个一级域名,www.efonmark.com,那个二级域名也不打算维护了。

但一番博客文章中所有的注释都是用的这个二级域名,也有一百多篇文章了。要想一个一个改起来显然是不划算的。作为程序员的我们当然要用程序员的方式处理这种事情。

当然这个功能python也可以做,以前一番也都是用python去处理这样的事情的。

但最近一番不是在学javascript吗,而且JavaScript对部署前端也有优势,所以这个小需求一番准备用JavaScript来做,顺便也练习下,以后尽量多用js,少用python。

js据我了解现在用的非常广泛,但可能是因为大数据和人工智能的原因,现在程序小白喜欢用python。

环境准备

  • win10 + nodejs

思路方法

  • fs模块处理文件。
  • path模块处理文件查找和路径处理。
  • 变量参数清晰独立,方便动态配置。
  • 功能函数封装,方便扩展。

代码展示

var gFilePath = './content';
var gExtension = '.md';
var gSrcStr = 'efonfighting.imwork.net';
var gReplaceStr = 'www.efonmark.com';

dirContentReplace(gFilePath, gExtension, gSrcStr, gReplaceStr);

/**
 * 方法说明 替换一个文件夹下所有文件中的特定字符串,不包含子文件夹
 * @name dirContentReplace
 * @param {str} filePath 文件所在路径
 * @param {str} extension 要修改文件的后缀名
 * @param {str} srcStr 替换前的字符串
 * @param {str} replaceStr 替换后的字符串
 * @return {none}
 * @note 话说这个js里函数套函数的格式好难看啊,不知道怎么优化,继续深入学习吧
 */
function dirContentReplace(filePath, extension, srcStr, replaceStr) {
    var fs = require('fs');
    var path = require("path");
    //readdir方法读取文件名
    fs.readdir(filePath, 'utf8', function (err,files) {

        if (err) return console.log(err);

        //根据后缀名筛选要操作的文件
        var targetFiles = files.filter(function(file) {
            return path.extname(file).toLowerCase() === extension;
        });
        console.log('content dir is:' + filePath);

        targetFiles.forEach(function(item, index) {

            var itemPath = path.join(filePath, item);
            console.log(itemPath);

            //readFile方法读取文件内容
            fs.readFile(itemPath, 'utf8', function(err,data){
                var result = data.replace(RegExp(srcStr, "g"), replaceStr);

                //writeFile改写文件内容
                fs.writeFile(itemPath, result, 'utf8', function (err) {
                     if (err) return console.log(err);
                });
            });
        });
    });
}

/**
 * 方法说明 替换一个文件夹下所有文件中的特定字符串,包含子文件夹
 * @name recDirContentReplace
 * @param {str} filePath 文件所在路径
 * @param {str} extension 要修改文件的后缀名
 * @param {str} srcStr 替换前的字符串
 * @param {str} replaceStr 替换后的字符串
 * @return {none}
 * @note 话说这个js里函数套函数的格式好难看啊,不知道怎么优化,继续深入学习吧
 */
function recDirContentReplace(filePath, extension, srcStr, replaceStr) {
    var path = require("path");

}

安装好nodejs后,直接在cmd中用node命令执行即可。

其他

前天一番不小心断更了,一番遵守诺言。

明天中午12点,我们日更群里来相见。

一番雾语:重复的工作代码化。

本文分享自微信公众号 - 一番码客(efonfighting),作者:Efon-fighting

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2020-02-07

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • hexo的图片和视频显示

    之前一番因为买了阿里云和域名,而且备了案。于是在阿里云上重新部署了博客,同样用的hexo。

    efonfighting
  • NodeJs-简介与定义变量

    Node.js 是一个基于Chrome JavaScript 运行时建立的一个平台。

    efonfighting
  • JavaScript基本数据类型

    efonfighting
  • 类型转换的判定方式

    对于“==”,我们肯定不陌生,但是背后的判定机制我们可能不是很熟悉,我现在先举一些例子,最后再总结一下大概的方法: null == undefined // ...

    欲休
  • 原 Promise 实现

    魂祭心
  • 说下js中的bind

    bind的受体是对象,返回的是个新的函数。 我们知道this总是指向调用他的对象。但是有时候我们希望‘固化’这个this。 也就是无论怎么调用这个返回的函数...

    mafeifan
  • js中的变量声明问题

    从1,,2中我们可以看出js引擎是先对var声明的变量进行注册,再对函数类型的变量进行注册。 而3和4是一样的原理,js引擎执行到这段代码时,首先注册var a...

    theanarkh
  • 简单的实现Javascript的MVC

    最近看了一篇文章,“30行代码实现Javascript中的MVC”,原文链接:http://www.jqsite.com/notes/1603205925.ht...

    IMWeb前端团队
  • 简单的实现Javascript的MVC

    最近看了一篇文章,“30行代码实现Javascript中的MVC”,原文链接:http://www.jqsite.com/notes/1603205925.ht...

    IMWeb前端团队
  • 解决JQuery中的ready函数冲突

    jQuery确实是一个提高前端开发效率的好框架(虽然很多大牛们都说它效率不咋地),但是用好它有时候并不容易,也许你也遇到过以下情况: 一个aspx页面通常可以包...

    菩提树下的杨过

扫码关注云+社区

领取腾讯云代金券