将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.bat
和result.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); }); };