#powershell #text #format #clipboard
#powershell #текст #форматирование #буфер обмена
Вопрос:
Я хочу написать сценарий Powershell, который при запуске удалит все форматирование и аналогичные метаданные из текста в буфере обмена.
Я говорю о таких вещах, как копирование некоторого текста из Microsoft Word и вставка его в Excel, обычно это выделяет его жирным шрифтом, курсивом или т. Д. Форматирование текста в Word, но я хочу вставить его, как если бы я скопировал его в блокнот и скопировал его оттуда.
- Я бы предпочел избежать необходимости эмулировать открытие notepad.exe вставляем туда и копируем снова, так как я надеюсь, что есть более элегантный / интеллектуальный вариант.
- Я знаю, что в приложениях Office есть опция копирования «Только текст», но она не только не всегда работает так, как вы ожидаете / хотите, но и копирование в другие приложения не имеет такой опции.
Я знаю, как получить текст из буфера обмена с помощью «Get-Clipboard» и впоследствии установить его с помощью «Set-Clipboard», но я понятия не имею, ГДЕ хранится информация о форматировании.
Комментарии:
1. Не уверен, что я понимаю вопрос — звучит так, как будто вы просто ищете
Get-Clipboard -Format Text -TextFormatType UnicodeText -Raw |Set-Clipboard
?2. @MathiasR.Jessen, черт возьми, это именно то, что мне нужно! Извините, я не знал, что есть опция «Raw»! 🙂
3. Не беспокойтесь — спасибо за согласие.
Ответ №1:
tl; dr
-
Простой вызов
Get-Clipboard
должен дать вам желаемое представление в виде обычного текста. -
Добавьте
-Raw
, если вы хотите, чтобы текст возвращался в виде однострочной многострочной строки, а не в виде массива строк.
Справочная информация:
-
Приложения, которые копируют форматы расширенного текста в буфер обмена, такие как Word и Excel, копирующие RTF и HTML, обычно также копируют текстовое представление того же содержимого.
-
Get-Clipboard
Командлет PowerShell извлекает представление :-
по умолчанию в Windows PowerShell:
- Чтобы получить один из расширенных форматов (если таковой имеется), используйте
-TextFormatType
параметр с соответствующим значением перечисления.[1]
- Чтобы получить один из расширенных форматов (если таковой имеется), используйте
-
неизменно в PowerShell (Core) версии 7 , где
Get-Clipboard
поддерживается только извлечение обычного текста. -
Отдельно, в обеих версиях PowerShell, вы можете использовать
-Raw
переключатель для запроса возврата многострочного текста в буфер обмена в виде одиночной многострочной строки, а не массива строк, который используется по умолчанию.
-
[1] Чтобы выразить поведение по умолчанию с явными аргументами:
Get-Clipboard -Format Text -TextFormatType UnicodeText
; в документации не указано, отличается ли значение перечисления Text
и как именно.