下記のように、URLをHtml形式のリンクに変換します(文字列のHERE!はスクリプトで固定)
URLをチャットやメールなどに貼り付ける時、URLそのままだと長いので、短くすることが目的です。
適当なソフトが見つからなかったので、PowerShellで作ってみました。
1. 使い方
- 下記のバッチファイルとPowerShellスクリプトを同一フォルダに配置
- URLをクリップボードにコピー
- convert_URL_to_html_format_link.bat を実行
- ここでクリップボードのURLが、Html形式のリンクに置き換わる
- 貼り付けたいアプリケーションでペースト
2. バッチファイルとPowerShellスクリプト
ファイルは>こちら
powershell -v 5 -NoProfile -ExecutionPolicy Unrestricted .\convert_URL_to_html_format_link.ps1
# クリップボードにURLが格納されていたら、それをHTML形式のリンクに変換する # ・実行時は PowerShell v 5 を指定のこと。Set-Clipboard の -AsHtml パラメーターが v5 でしか使えない # ・生成するリンクが英語なのは、日本語の文字化け問題を解消できなかったから # PowerShellのバージョンが不適切なら抜ける if ( (Get-Host).Version.Major -ne 5 ) { Write-Host "This script requires powershell V5." exit } # クリップボード内容をテキスト形式で取得 $clipboard_text = Get-Clipboard -Format Text # httpから始まる文字列ならURLと判断 if ( $clipboard_text -like "http*" ) { # HTMLタグでURLへのリンクを作り、Html形式でクリップボードに設定 $html_link = "<a href=""" + $clipboard_text + """><b><i>HERE!</i></b></a>" Set-Clipboard -AsHtml $html_link # 生成内容をコンソールに出力 Write-Host "Created Link:" $html_link }
3. スクリプトの説明
クリップボードにURLリンクを設定する方法として、Set-Clipboard
の-asHtml
パラメーターを使いました(参照:Set-Clipboard)。
下記のように文字列($html_link)を渡すと、HTML形式でクリップボードに格納してくれます。
今回はa href
タグで作ったURLのリンクを渡してます。
PS C:\> $html_link = "<a href=""https://www.google.com/"">Google</a>" PS C:\> Set-Clipboard -AsHtml $html_link
残念ながら、このパラメーターは PowerShell 7 では削除されているようで、Windows PowerShell 5 のみで実行可能です。また、html内に日本語を含むケースの文字化けを解決できなかったので、英語のみで使ってます。
参考にした情報
- Microsoft(PowerShell) - Set-Clipboard
- -asHtml パラメーターが今回の目的にちょうど良く、見つけられてラッキーでした
- オフィスデイタイム - クリップ見え窓 - クリップボード/D&Dデータ内容表示ツール
- クリップボードの仕組み・状態を理解するのに、とても助けになりました
- GitHub(PowerShell Team) - Set-Clipboard -AsHtml puts invalid CF_HTML on clipboard with non-ASCII text #3177
- 日本語を含むHtmlが文字化けするのは、このせいだろうか?
- Qiita(@cd01さん) - バッチファイルから PowerShell を呼び出す方法