1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

PowerShell経由でクリップボードからHTML形式で取得する方法

Last updated at Posted at 2023-05-06

サンプル(PowerShell5系)

Get-Clipboard -Format Text -TextFormatType Html

解説

  • 画像かテキストかでいえばテキスト
  • テキストもプレーンテキストとして取り出す方法もあるけど、HTML形式で取り出す方法もある
  • HTML形式で取り出すとゴリゴリのインラインCSSがたっぷり入ったHTMLが帰ってくる)
    image.png

PowerShell7系は使い物にならないのでやめておけ

2023-05-06時点でのPowerShell7系では-TextFormatTypeのパラメータが消えてるのでこの手法が使えるのは、PowerShell5系のみ。このレベルで互換性がなくなってるのでPowerShell7は別物と認識した方が良さそう。.netフレームワークを直で呼び出す方法も互換性がなくなってるのでたちが悪い。

実行ファイルは私の手元のWindows11上では以下のように共存できている。

PowerShell5系

%SystemRoot%\system32\WindowsPowerShell\v1.0\powershell.exe

PowerShell7系

"C:\Program Files\PowerShell\7\pwsh.exe" -WorkingDirectory ~

実行ファイル名から違うので、仮に両方にパスが通っていても共存はできる。

ただ、こんなにも別モノで互換性のないものにバージョン番号つけちゃってどうするんだろうという心配。

別解としてのpythonは無理でした

pythonにもwin32clipboard というモジュールがあるのでそれでクリップボードにアクセスできそうにも見えたが、テキストフォーマットのサブフォーマットとしてのHTMLは選択できなかった。

残課題ーEncode

上記のサンプルの画像のように日本語部分が文字化けしている。UTF8の文字列をSJIS扱いで表示している状態の文字化け。Get-Clipbord時点での文字化けなのか、標準出力時の文字化けなのかの切り分けがまだできてないので、この課題は宿題。

別解- ブラウザを使う

PowerShellがとても扱いづらいので、ワンアクション必要だけどブラウザ上のリッチエディタ上にペーストさせれば、InnerHTMLでHTMLテキストは取得できる。こっちの方がマルチOSでいい。エンコードも気にしないでもいい。

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?