Powershell - remove metadados do texto
Quero escrever um script Powershell que, quando executado, removerá toda a formatação e metadados semelhantes do texto na área de transferência.
Estou falando de coisas como copiar algum texto do Microsoft Word e colá-lo no Excel, normalmente isso cola com negrito, itálico ou etc. formatação do texto no Word, mas quero colá-lo, como se tivesse copiado para bloco de notas e copiei de lá.
- Prefiro fugir da necessidade de emular a abertura do notepad.exe, colando e copiando novamente, pois espero que haja uma opção mais elegante / inteligente.
- Eu sei que existe uma opção de cópia "Somente texto" em aplicativos do Office, mas não só nem sempre funciona como você espera / deseja, mas a cópia em outros aplicativos não tem essa opção.
Eu sei como obter o texto da área de transferência com "Get-Clipboard" e posteriormente defini-lo com "Set-Clipboard", mas não tenho ideia de ONDE as informações de formatação estão armazenadas.
Respostas
tl; dr
Apenas chamar
Get-Clipboarddeve fornecer a representação de texto simples desejada.Adicione
-Rawse quiser que o texto seja retornado como uma string única e com várias linhas, em vez de uma matriz de linhas.
Informações básicas :
Os aplicativos que copiam formatos baseados em rich text para a área de transferência , como Word e Excel copiando RTF e HTML, geralmente também copiam uma representação em texto simples do mesmo conteúdo .
O Get-Clipboardcmdlet do PowerShell recupera a representação de texto simples :
por padrão no Windows PowerShell :
- Para obter um dos formatos ricos (se houver), use o -TextFormatTypeparâmetro com o valor de enumeração apropriado. [1]
invariavelmente no PowerShell [Core] v6 + , onde
Get-Clipboardoferece suporte apenas à recuperação de texto simples.Separadamente, em ambas as edições do PowerShell, você pode usar a
-Rawopção para solicitar que o texto multilinhas na área de transferência seja retornado como uma única string multilinhas em vez de uma matriz de linhas , que é o padrão.
[1] Para expressar o comportamento padrão com argumentos explícitos:
Get-Clipboard -Format Text -TextFormatType UnicodeText; a documentação não especifica se e como o valor de enumeração Textdifere.