Powershell - eliminar metadatos del texto
Quiero escribir un script de Powershell que, cuando se ejecute, eliminará todo el formato y los metadatos similares del texto en el portapapeles.
Estoy hablando de cosas como copiar un texto de Microsoft Word y pegarlo en Excel, normalmente esto lo pega con negrita, cursiva, etc., formateando el texto que tenía en Word pero quiero pegarlo, como si lo hubiera copiado a bloc de notas y lo copié desde allí.
- Preferiría escapar de la necesidad de emular la apertura de notepad.exe, pegar allí y copiar nuevamente, ya que espero que haya una opción más elegante / inteligente.
- Sé que hay una opción de copia "Solo texto" en las aplicaciones de Office, pero no solo no siempre funciona como cabría esperar / desearía, sino que copiar en otras aplicaciones no tiene esa opción.
Sé cómo obtener el texto del portapapeles con "Get-Clipboard" y luego configurarlo con "Set-Clipboard" pero no tengo idea de DÓNDE se almacena la maldita información de formato.
Respuestas
tl; dr
Solo llamar
Get-Clipboarddebería darle la representación de texto sin formato deseada.Agregue
-Rawsi desea que el texto se devuelva como una cadena única de varias líneas en lugar de como una matriz de líneas.
Información de antecedentes :
Las aplicaciones que copian formatos basados en texto enriquecido en el portapapeles , como Word y Excel que copian RTF y HTML, generalmente también copian una representación de texto sin formato del mismo contenido .
El Get-Clipboardcmdlet de PowerShell recupera la representación de texto sin formato :
de forma predeterminada en Windows PowerShell :
- Para obtener uno de los formatos enriquecidos (si está presente), use el -TextFormatTypeparámetro con el valor de enumeración apropiado. [1]
invariablemente en PowerShell [Core] v6 + , donde
Get-Clipboardsolo admite la recuperación de texto sin formato.Por separado, en ambas ediciones de PowerShell, puede usar el
-Rawconmutador para solicitar que el texto de varias líneas del portapapeles se devuelva como una única cadena de varias líneas en lugar de una matriz de líneas , que es el valor predeterminado.
[1] Para expresar el comportamiento por defecto con argumentos explícitos:
Get-Clipboard -Format Text -TextFormatType UnicodeText; la documentación no especifica si Textdifiere el valor de la enumeración ni cómo .