美文网首页优美编程
nodejs实现复制内容到剪贴板

nodejs实现复制内容到剪贴板

作者: 小遁哥 | 来源:发表于2019-12-27 18:20 被阅读0次

    需求如下:

    index.txt 的内容进行格式转换后复制到剪贴板。

    index.txt

    莲子心中苦,梨儿腹内酸。--明末清初.金圣叹
    雨入花心,自成甘苦。水归器内,各现方圆。--明末清初.金圣叹
    
    真读书人天下少,不如意事古今多。--明末清初.金圣叹
    

    转换后

      {
        "content": "莲子心中苦,梨儿腹内酸。--明末清初.金圣叹"
      },
      {
        "content": "雨入花心,自成甘苦。水归器内,各现方圆。--明末清初.金圣叹"
      },
      {
        "content": "真读书人天下少,不如意事古今多。--明末清初.金圣叹"
      },
    

    流程如下

    读取index.txt中的内容

    生成一个copy.bat文件,写入 clip < result.txt

    将转换后的内容保存到result.txt ,写入文件是考虑到特殊字符会导致命令执行失败

    因为clip命令只支持GBK编码,但是nodejs在写入文件时不支持GBK编码,则需要iconv-lite进行转码,否则中文会出现乱码。

    执行copy.bat,实现内容复制到剪贴板,删除copy.batresult.txt

    代码如下:

    const file_os = require("fs");
    const contentStr = file_os.readFileSync("index.txt", "utf-8");
    const exec = require('child_process').exec;
    const iconv = require('iconv-lite');
    let sentenceList = contentStr.split("\r\n").filter((sentence) => sentence != "").map((sentence) => ({ content: sentence }));
    let resultStr = JSON.stringify(sentenceList);
    resultStr = resultStr.substring(1, resultStr.length - 1);
    resultStr = iconv.encode(resultStr, 'gbk');
    copyToClipboard(resultStr, () => {
        console.log('已经复制到剪切板');
    })
    function copyToClipboard(text, func) {
    
        let resultfileName = "result.txt";
        let command = `clip < ${resultfileName} `;
        file_os.writeFileSync(resultfileName, resultStr);
    
        var cmdFileName = 'copy.bat';
        file_os.writeFileSync(cmdFileName, command);
        exec(cmdFileName, function (err, stdout, stderr) {
            if (err || stderr) return console.log(err, stdout, stderr);
            // 用nodejs删除文件
            file_os.unlinkSync(cmdFileName);
            file_os.unlinkSync(resultfileName);
            func(text, stdout);
        });
    };
    
    

    文件结构

    iconv-lite 需要自己安装,入口文件index.txt

    image.png

    百度云盘

    链接: https://pan.baidu.com/s/1eXisgOakAb8EQsvoGV_PnQ
    提取码: 7k3u

    视频地址

    相关文章

      网友评论

        本文标题:nodejs实现复制内容到剪贴板

        本文链接:https://www.haomeiwen.com/subject/ybwdoctx.html