Webページのリンクをページタイトル付きでクリップボードにコピー君
## 仕様
Webページのタイトルを取得するPowerShellスクリプト
このスクリプトは、引数として与えられたURLのWebページのタイトルを取得し、それをコンソールに表示します。
スクリプトを実行する際に、引数として「webページのURL」を指定します
引数として受け取ったURLのWebページのページタイトルを取得して、
コンソールに表示します。
クリップボードに、URLとページタイトルをくっつけたテキストを保存します。
{URL} | {ページタイトル}
## コード #PowerShellが文字化けする時の対処
code:get-webpagetitle.ps1
param(
string$url
)
# (↓日本語テキストが文字化けしないようにするための対応)
# PowerShell上で日本語が文字化けしてしまうのを防ぐため、文字コードを統一する
# 例えば、スクリプト中で扱う文字列(取得したhtmlテキスト等)」の文字コードが UTF-8 で書かれていたとして、
# それに対してPowerShellコンソール上での文字エンコード方式が Shift-jis になっている場合、
# エンコーディングの不一致が生じていて文字化けが起きる。
# → それを防ぐために、明示的にエンコード方式を指定して両者の文字コードが揃うようにします。
# 文字コードは UTF-8 とする
$enc = System.Text.Encoding::UTF8
# コンソール上での文字エンコード方式を変更
Console::OutputEncoding = $enc
try {
# 引数で受け取ったURLのWebページのタイトルを取得する
# WebClientオブジェクトを作成
$webclient = New-Object System.Net.WebClient
$webclient.Encoding = $enc
# URLのHTMLをダウンロード
$html = $webclient.DownloadString($url)
# HTMLから<title>タグを抽出してページタイトルを取得
$title = (regex'<title(.*?)>(.*?)<(.*?)/title>').Match($html).Groups2.Value
# 取得結果の出力
# コンソールへタイトル取得結果を表示
Write-Host $url
Write-Host $title
# クリップボードへ URLとページタイトルのテキストを保存
Set-Clipboard "$url | $title"
}
catch {
Write-Host "エラーが発生しました: $_"
}
Write-Host ""
Write-Host "done."
使い方
get-webpagetitle.ps1を実行します。
実行の仕方
スクリプトを実行する際に、引数としてURL文字列を1つ指定(必須)
→(結果)
クリップボードに「{URL} | {ページタイトル}」の形式のテキストが保存されます。
(実行例).ps1ファイルが置いてあるフォルダでPowerShellを開いて、以下のコマンドを実行する。
コマンド:
.\get-webpagetitle.ps1 https://google.com
(実行結果)
実行時のコンソール画面:
PS C:\xxx> .\get-webpagetitle.ps1 https://google.com # ( ←コマンド)
https://google.com # (←実行結果)
Google
done.
クリップボードに入ったテキスト:
https://google.com | Google
---
(これを手軽に実行するには)
→「 ファイル名を指定して実行」から実行できるようにするといいです
code:ct.bat
@ECHO OFF
REM (↓バッチファイル自身が置かれているディレクトリをカレントにする)
cd /d %~dp0
REM ps1スクリプトを実行する
powershell -Command .\get-webpagetitle.ps1 %1
(👆これは.ps1を起動するたの.bat)
---
#ちょっとしたツールを自作して自分で使う
---
(追記)
(↑)のスクリプトのコードはバグがある事に気が付いたので メモ。 #2024/11/14
→ もし、実行対象のサイトのソースが <TITLE> xxxx </TITLE>みたいに一行で書かれていない場合
タイトルが取得されません((URL) |という文字列しかクリップボードに入らない)
例: ソースのHTMLが ↓みたいに 複数行で書いてあった場合ダメです
code:xxx.html
..(略)
<TITLE>
XXXX.. (ページタイトル)
</TITLE>
--