为什么复制文件后会丢失剪贴板数据?

为什么复制文件后会丢失剪贴板数据?

想知道为什么复制文件时会丢失剪贴板数据。选择一串文本并将其复制到剪贴板后,如果我在将文本粘贴到某处之前选择文件并在 Windows 资源管理器中复制它,则复制的文本数据会以某种方式丢失。

例如,我选择并复制以下文本字符串:

黑狗晚上跑

然后我转到 Windows 资源管理器选择并复制一个文件:

无标题.bat

之后我粘贴了文件的副本untitled.bat。如果我随后导航到可以粘贴文本的地方(如记事本),最初复制的文本字符串就不再位于剪贴板中以供粘贴。

Windows 为什么会这样做?

运行Windows10 Pro

答案1

你不会“丢失”剪贴板数据。它只是会被新数据覆盖,并且默认情况下您无法访问旧数据,因为它作为单个记录存储在 RAM 中。不过,还有更好的方法来跟踪它,后面会列出其中一种方法。

这是因为系统无法完全知道您到底想要粘贴什么,而且只有一个Ctrl+V快捷键。可以对应用程序进行编码以检查特定格式,并在需要时正确处理所有格式。因此,由用户决定最后一项是什么。如果当前格式受支持,则由应用程序通知用户,不幸的是,如果粘贴了不支持的格式,许多应用程序什么也不做。

本网站上的问答文本框就是一个很好的例子。您可以将文本(CF_TEXT/CF_UNICODETEXT类型)作为最后一项,它将被粘贴为文本。您还可以将图像作为最后一项(CF_DIB类型),它将上传图像。或者您可以从 Windows 资源管理器复制文件(类型)并CF_HDROP粘贴,这不会有任何作用,因为这里不欢迎常规的非图像文件上传。

相比之下,如果您在 Gmail 中撰写邮件,则所有这些类型都将受支持。CF_TEXT仍将粘贴文本。CF_DIB仍将粘贴内联图像。但是,CF_HDROP这次将得到更好的处理并作为附件发送。

您可以阅读更多有关 Windows 中可用的类型/格式的信息这里


您可以使用高级剪贴板管理器,例如同上为了解决这个限制:

  • 默认情况下,访问项目历史记录要容易得多 - 通过可以显示和操作的列表(例如,使用快捷方式转到下一个项目) - 并且可以根据需要进一步配置它
  • 您还可以配置 3 个额外的特殊复制缓冲区,用于不同类型的存储。在Options->中Copy Buffers,您可以为每个缓冲区设置 3 个键绑定(单独列表):复制、粘贴和剪切。假设您将其定义为传统快捷键 + 。然后,您可以使用+ +Shift将所有文件复制到新定义的缓冲区,并且您的主剪贴板仍将包含文本。这对于某些工作流程很有帮助。ShiftCtrlC

在 Linux 上复制Q

为什么系统本身不实现多个缓冲区?各种原因都属于“基于意见”的范畴,但事实是,如果使用起来很舒服,它们会引入额外的键盘快捷键/按钮,从而造成混乱,而让不需要此功能的用户的系统变得混乱并不是一件好事。

答案2

剪贴板只能保存一次一个项目,可能为一种或多种格式。例如,当您从某个网站复制图像时,浏览器可能会放置图像位图、图像 URL、网站、替代文本……目标应用程序会在粘贴时选择适当的格式,但它仍然只是一个项目。您可以轻松检查剪贴板中的当前格式有了这个

Ctrl如果它可以存储多个项目,那么按下+时操作系统如何知道要粘贴什么V?几乎所有操作系统都是这样。如果您复制另一项内容(无论类型如何),那么旧内容将丢失。想象一下复制文件会将代表文件的对象以及文件路径作为文本放入剪贴板,那么如何保留旧文本?如果支持多项剪贴板,那么按下Ctrl+时的合理行为V是粘贴顶部项目,但如果复制文件时将某些文本放入剪贴板,则之前的文本已经进入列表下方,无法粘贴


但是 Windows 有内置剪贴板历史记录功能,只需启用它并按Win+V即可。它甚至可以在 Windows PC 之间同步

剪贴板设置

剪贴板历史记录

答案3

Windows 剪贴板可以保存多种格式,当您复制某些内容时,源应用程序通常会将数据以多种格式放入剪贴板中。然后,目标应用程序可以选择两个应用程序都支持的“最佳”格式。将新项目复制到剪贴板通常会替换现有内容。

当您在 Windows 资源管理器中复制和粘贴内容时,会使用 Windows 剪贴板,但它不会真正将整个文件移动/复制到剪贴板,而只是将文件的详细信息存储在那里,以及用户是否选择了“剪切”(移动文件)或“复制”(复制文件)操作。然后,当用户将文件粘贴到目标位置时,就会执行实际的移动或复制。

以前,如果您在另一个应用程序中复制某些内容并将其粘贴到 Windows 资源管理器中,它会创建一个包含剪贴板内容的“scrap”文件,但此功能很少使用,并在 Windows Vista 中被删除。

这使得 Windows 资源管理器处于一个稍微奇怪的位置,它使用系统剪贴板,但无法与大多数其他应用程序互操作。

答案4

其他人已经指出了这种情况发生的技术原因。如果你想自己观察,可以尝试NirSoft 内部剪贴板。它向您显示 Windows 剪贴板中的内容(而不是 Windows 剪贴板历史记录)。它将仅包含您复制的一项内容,但该内容可能以不同的格式存在,例如纯文本或 HTML。

您的文本可能如下所示:

文本已复制

之后

  • Ctrl+C或者
  • 文件上下文菜单/复制
  • 色带复印

在 Windows 资源管理器中:

文件已复制

该特定问题的解决方案:

  • 用鼠标选择文件并按住,点击Ctrl进行复制,移动鼠标直到看到复制图标(以 表示)[+],然后释放鼠标按钮。
  • 使用第三方工具,如快速复制复制文件。

相关内容