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

3

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

但是我想要清空剪贴板,尝试了以下方法:

Original Answer翻译成"最初的回答"

echo>nul|clip

有没有其他方法清空Windows剪贴板?


< nul clip 是什么意思? - aschipfl
3
break|clip(清除剪贴板中的文本;如果有图片(或可能是任何文本之外的对象),则没有影响)(@aschipfl你的不起作用(出乎意料)) - Stephan
什么?rem/ | clip是怎么工作的呢?(暂时无法测试,我在使用手机) - aschipfl
2
@aschipfl: 抱歉,不行:Der Befehl "rem/" ist entweder falsch geschrieben oder konnte nicht gefunden werden.(只有 rem/ 不带管道符号才有效) - Stephan
2
谢谢,@Stephan!(rem/) | clip 这样写就可以了;使用 < nul clip 失败的时候真是太不合逻辑了,设计得真糟糕! - aschipfl
4个回答

9

这里还有另一种方法可以实现。看起来至少可以清除 CF_TEXT 和 CF_BITMAP。需要测试以查看是否可以清除所有 CF_* 类型。

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

7

好的,最合适的方法(至少我认为)是将什么也没有(nul)重定向(redirect)到标准输入(句柄0),然后通过管道符(|)将其传输给clip命令,例如:< nul clip。但由于该命令设计得非常糟糕,因为似乎只能使用文件进行输入重定向(<),所以这种方法无法实现。

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

echo/> nul | clip

break | clip

(rem/) | clip

type nul | clip

goto | clip

call | clip

exit | clip

所有上述方法使用管道左侧不会向STDOUT(处理程序1)输出任何内容的命令。

当使用PowerShell时,以上命令都不起作用。我们应该使用cmd来运行这些命令。 - ToughMind
1
是的,@ToughMind,这是关于[tag:cmd]或者[tag:batch-file]的代码,就像问题中的那个;其他答案已经提供了[tag:powershell]的解决方案... - aschipfl

4

如果您想使用 Powershell 完成此操作:

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

0

批处理

还有一些批处理的方法:

<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

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接