淺談Node.js操作剪貼板的兩種方式
在 Node.js 中,我們可以通過多種方式實(shí)現(xiàn)對系統(tǒng)剪貼板的讀寫操作。本文將以一段示例代碼為基礎(chǔ),分別介紹兩種常見的剪貼板操作方式:
1.clipboardy
下載第三方工具庫clipboardy ,調(diào)用該庫封裝的方法可直接向剪切板讀寫內(nèi)容。
npm install clipboardy
clipboardy不支持使用require導(dǎo)入,需在package.json文件中添加選項(xiàng) "type": "module" ,在代碼中使用import導(dǎo)入工具庫
import clipboard from "clipboardy";
clipboard.writeSync("hello world"); // 向剪貼板寫入內(nèi)容
方法說明: clipboard.writeSync(text: string): void
參數(shù):text:要寫入系統(tǒng)剪貼板的文本內(nèi)容,類型為 string
功能:同步將字符串寫入剪貼板。若執(zhí)行成功,按下ctrl+v可粘貼該內(nèi)容,如果文本內(nèi)容為空字符串,按下ctrl+v無反應(yīng),類似于清空剪切板
let str = clipboard.readSync(); // 從剪貼板讀取內(nèi)容 console.log(str);
方法說明:clipboard.readSync(): string
返回值:返回當(dāng)前剪貼板中存儲的文本內(nèi)容,類型為 string
功能:同步讀取系統(tǒng)剪貼板中的文本數(shù)據(jù)
clipboardy工具庫的特點(diǎn)為簡潔、跨平臺,適合快速開發(fā),但無法復(fù)制文件。
2.child_process.exec
在某些場景中,我們可能希望通過系統(tǒng)命令實(shí)現(xiàn)更復(fù)雜的剪貼板操作,比如操作文件、清空剪貼板等。這時(shí)可以使用 Node.js 內(nèi)置的 child_process 模塊中的 exec() 函數(shù)。
(1)讀取剪切板
import { exec } from "child_process";
const get_command = `powershell Get-Clipboard`;
exec(get_command, (error, stdout, stderr) => {
if (error) {
console.error("讀取剪貼板內(nèi)容失敗:", error);
return;
}
console.log(stdout);
});命令說明:Get-Clipboard 是 PowerShell 命令,用于獲取當(dāng)前剪貼板的內(nèi)容
方法說明: exec(command[, options][, callback]),功能是執(zhí)行一條 shell 命令并一次性獲取輸出
參數(shù):
- command:完整的 shell 命令字符串
- options:可設(shè)置輸出內(nèi)容的編碼格式等
- callback:回調(diào)函數(shù),獲取 error、stdout(標(biāo)準(zhǔn)輸出)、stderr(錯(cuò)誤輸出),stdout 將包含剪貼板中的文本內(nèi)容
(2)設(shè)置剪切板字符內(nèi)容
const set_command = `powershell Set-Clipboard 'hello wrold'`;
exec(set_command, (error, stdout, stderr) => {
if (error) {
console.error("復(fù)制內(nèi)容到剪貼板失敗:", error);
return;
}
console.log(stdout);
});命令說明:
- Set-Clipboard 是 PowerShell 命令,用于將指定文本寫入剪貼板。
- 'hello wrold' 是要寫入的文本內(nèi)容,用單引號包裹
(3)設(shè)置剪切板文件內(nèi)容
const file_command = `powershell Set-Clipboard -Path "F:/CSDN/test.json"`;
exec(file_command, (error, stdout, stderr) => {
if (error) {
console.error("復(fù)制文件到剪貼板失敗:", error);
return;
}
console.log(stdout);
});命令說明:
- Set-Clipboard -Path <路徑> 可以將文件對象復(fù)制到剪貼板。
- 執(zhí)行該命令后,用戶可以在資源管理器中直接粘貼該文件。
- 注意路徑應(yīng)使用雙引號包裹,尤其是路徑中包含空格或中文時(shí)。
(4)清空剪切板
const clear_command = `cmd /c "echo off | clip"`;
exec(clear_command, (error, stdout, stderr) => {
if (error) {
console.error("清空剪貼板失敗:", error);
return;
}
console.log(stdout);
});命令說明:
- cmd /c:調(diào)用 CMD 執(zhí)行后面的命令并關(guān)閉命令行窗口。
- echo off:輸出空字符串。
- | clip:將前面命令的輸出(此處為空)通過管道符 | 傳給 clip 命令。
- clip:Windows 命令行工具,用于將輸入內(nèi)容復(fù)制到剪貼板。
- 整體功能是向剪貼板寫入空內(nèi)容,達(dá)到清空效果,按下ctrl+v無反應(yīng),此時(shí)按下win+v打開剪切板,里面依舊有內(nèi)容
3.總結(jié)對比
| 操作方式 | 優(yōu)點(diǎn) | 適用場景 |
|---|---|---|
| clipboardy | 簡潔、跨平臺、安裝即用 | 快速開發(fā)、文本操作 |
| exec+命令 | 功能更豐富,可操作文件等 | 深度定制、系統(tǒng)集成 |
到此這篇關(guān)于淺談Node.js 操作剪貼板的兩種方式的文章就介紹到這了,更多相關(guān)Node.js 操作剪貼板內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Node在Controller層進(jìn)行數(shù)據(jù)校驗(yàn)的過程詳解
這篇文章主要給大家介紹了關(guān)于Node在Controller層進(jìn)行數(shù)據(jù)校驗(yàn)的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2020-08-08
使用Node.js find-up在父目錄中高效尋找文件與目錄
find-up 是一個(gè)小巧但功能強(qiáng)大的 Node.js 包,它能幫助我們實(shí)現(xiàn)這一需求,本文將深入探究如何使用 find-up 進(jìn)行有效搜索,并結(jié)合豐富的代碼演示幫助大家快速掌握其用法,需要的朋友可以參考下2024-05-05

