Powershell - usuwa metadane z tekstu
Chcę napisać skrypt Powershell, który po uruchomieniu usunie całe formatowanie i podobne metadane z tekstu w schowku.
Mówię o takich rzeczach, jak kopiowanie tekstu z Microsoft Word i wklejanie go do Excela, zwykle to wkleja go pogrubieniem, kursywą itp., Formatując tekst w programie Word, ale chcę go wkleić, tak jakbym go skopiował Notatnik i skopiowałem go stamtąd.
- Wolałbym uniknąć konieczności emulacji otwierania programu notepad.exe, wklejania go i ponownego kopiowania, ponieważ mam nadzieję, że istnieje bardziej elegancka / inteligentna opcja.
- Wiem, że w aplikacjach pakietu Office istnieje opcja kopiowania „Tylko tekst”, ale nie tylko nie zawsze działa ona zgodnie z oczekiwaniami / oczekiwaniami, ale kopiowanie do innych aplikacji nie ma takiej opcji.
Wiem, jak pobrać tekst ze schowka za pomocą „Get-Clipboard”, a następnie ustawić go za pomocą „Set-Clipboard”, ale nie mam pojęcia, GDZIE są przechowywane informacje o formatowaniu.
Odpowiedzi
tl; dr
Samo wywołanie
Get-Clipboardpowinno dać pożądaną reprezentację w postaci zwykłego tekstu.Dodaj,
-Rawjeśli chcesz, aby tekst był zwracany jako pojedynczy , wieloliniowy ciąg, a nie jako tablica wierszy.
Informacje podstawowe :
Aplikacje, które kopiują sformatowane formaty tekstowe do schowka , takie jak Word i Excel kopiujące pliki RTF i HTML, zwykle również kopiują reprezentację tej samej zawartości w postaci zwykłego tekstu .
PowerShell jest Get-Clipboardcmdlet pobiera zwykły tekst reprezentacji :
domyślnie w programie Windows PowerShell :
- Aby uzyskać jeden z formatów sformatowanych (jeśli jest obecny), użyj -TextFormatTypeparametru z odpowiednią wartością wyliczenia. [1]
niezmiennie w PowerShell [Core] v6 + , gdzie
Get-Clipboardobsługuje tylko pobieranie zwykłego tekstu.Oddzielnie w obu wersjach programu PowerShell można użyć
-Rawprzełącznika, aby zażądać, aby tekst wielowierszowy w schowku został zwrócony jako pojedynczy, wieloliniowy ciąg, a nie jako tablica wierszy , co jest wartością domyślną.
[1] Aby wyrazić domyślne zachowanie za pomocą jawnych argumentów
Get-Clipboard -Format Text -TextFormatType UnicodeText:; dokumentacja nie określa, czy i jak Textróżni się wartość wyliczenia .