关于前端:Nodejs实现复制内容到剪贴板

需要如下:

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

实现如下

视频地址 – nodejs实现复制内容到剪贴板
npm包 – sf-copy-to-clipboard

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);
    });
};

评论

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

这个站点使用 Akismet 来减少垃圾评论。了解你的评论数据如何被处理