Nodejs實現複製內容到剪貼板

需求以下:

index.txt 的內容進行格式轉換後複製到剪貼板。node

index.txtgit

蓮子心中苦,梨兒腹內酸。--明末清初.金聖嘆
雨入花心,自成甘苦。水歸器內,各現方圓。--明末清初.金聖嘆

真讀書人天下少,不如意事古今多。--明末清初.金聖嘆

轉換後github

{
    "content": "蓮子心中苦,梨兒腹內酸。--明末清初.金聖嘆"
  },
  {
    "content": "雨入花心,自成甘苦。水歸器內,各現方圓。--明末清初.金聖嘆"
  },
  {
    "content": "真讀書人天下少,不如意事古今多。--明末清初.金聖嘆"
  },

流程以下

讀取index.txt中的內容npm

生成一個copy.bat文件,寫入 clip < result.txt ide

將轉換後的內容保存到result.txt ,寫入文件是考慮到特殊字符會致使命令執行失敗ui

由於clip命令只支持GBK編碼,可是nodejs在寫入文件時不支持GBK編碼,則須要iconv-lite進行轉碼,不然中文會出現亂碼。編碼

執行copy.bat,實現內容複製到剪貼板,刪除copy.batresult.txt code

實現以下

視頻地址 - 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);
    });
};
相關文章
相關標籤/搜索