如何使用批处理文件或 PowerShell 清除 Windows 剪贴板?

How to clear Windows clipboard using a batch file or PowerShell?

我有一个批处理文件,我的程序会自动使用剪贴板。

但我想清除剪贴板并使用了这个:

echo>nul|clip

还有其他清除Windows剪贴板的方法吗?

嗯,最合乎逻辑的方法(至少在我看来),就是 redirect (<) 什么都没有 (nul) STDIN (handle 0) 到 clip 命令,如 < nul clip,由于该命令的糟糕设计而无法工作,因为似乎输入重定向 (<) 只能用文件完成。

所以需要使用管道(|),它仍然允许几种方式:

echo/> nul | clip

break | clip

(rem/) | clip

type nul | clip

goto | clip

call | clip

exit | clip

以上所有方法都使用管道左侧的命令,不向 STDOUT(句柄 1)输出任何内容。

这是另一种方法。这似乎至少清除了 CF_TEXT 和 CF_BITMAP。需要测试它是否清除所有 CF_* 类型。

powershell -NoLogo -NoProfile -Command "Set-Clipboard -Value $null"

如果你想用 Powershell 来做:

Add-Type -AssemblyName System.Windows.Forms
[System.Windows.Forms.Clipboard]::Clear()

批量

更多的批量方式:

<nul set /p="" | clip
dir >nul | clip 
cd %cd% | clip
pushd %cd% | clip
cd >nul | clip

VBscript

VBscript 中的一个方法:

Dim IE
Set IE = CreateObject("InternetExplorer.Application")
IE.Navigate("about:blank")
IE.Document.ParentWindow.ClipboardData.SetData "text", ""
IE.Quit