【问题标题】:Powershell - remove metadata from textPowershell - 从文本中删除元数据
【发布时间】:2020-09-15 04:10:05
【问题描述】:

我想编写一个 Powershell 脚本,该脚本在运行时会从剪贴板中的文本中删除所有格式和类似的元数据。

我说的是从 Microsoft Word 复制一些文本并将其粘贴到 Excel 中之类的东西,通常这会将其粘贴为粗体、斜体等。格式化 Word 中的文本,但我想粘贴它,就好像我有将其复制到记事本并从那里复制。

  1. 我宁愿避免模拟打开 notepad.exe、粘贴并再次复制的需要,因为我希望有一个更优雅/更智能的选项。
  2. 我知道 Office 应用中有一个“纯文本”复制选项,但它不仅不能始终如您所愿/想要的那样工作,而且复制到其他应用程序中也没有该选项。

我知道如何使用“Get-Clipboard”从剪贴板获取文本,然后使用“Set-Clipboard”进行设置,但我不知道该死的格式信息存储在哪里。

【问题讨论】:

  • 不确定我是否理解这个问题 - 听起来您只是在寻找 Get-Clipboard -Format Text -TextFormatType UnicodeText -Raw |Set-Clipboard
  • @MathiasR.Jessen,天哪,这正是我所需要的!抱歉,我不知道有“原始”选项! :)
  • 不用担心 - 感谢您的接受。

标签: powershell text format clipboard


【解决方案1】:

tl;dr

  • 只需调用 Get-Clipboard 即可为您提供所需的纯文本表示形式。

  • 添加-Raw 如果您希望文本返回为单行、多行字符串而不是行数组


背景信息

  • 将基于富文本的格式复制到剪贴板的应用程序,例如复制 RTF 和 HTML 的 Word 和 Excel,通常复制纯文本表示相同的内容

  • PowerShell 的 Get-Clipboard cmdlet 检索 纯文本 表示

    • 默认情况下Windows PowerShell 中:

    • 总是在 PowerShell [Core] v6+ 中,Get-Clipboard 仅支持纯文本检索。

    • 另外,在两个 PowerShell 版本中,您可以使用 -Raw 开关来请求将剪贴板上的多行文本作为 单个多行字符串 而不是 行数组,这是默认设置。


[1] 使用显式参数表达默认行为:
Get-Clipboard -Format Text -TextFormatType UnicodeText;文档没有说明枚举值 Text 是否以及如何不同。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-10-10
    • 2015-12-14
    • 1970-01-01
    • 2021-11-13
    • 1970-01-01
    相关资源
    最近更新 更多