一つ前の記事で、クリップボードにキャプチャーしたイメージをファイルに落とすPowerShellスクリプトを作った。
クリップボードの画像をpngファイルに保存する
Windowsでスクリーンキャプチャをする場合、昔はPrintScreenキーを使っていたけど、SnippingToolが追加されて範囲指定ができるようになった。そして最近のWindows10の機能で、SHIFT + Win + Sでのキャ...
これをさらに改造して、クリップボードに文字列オブジェクトがある場合、余計なスタイル情報を剥ぎ取る機能を追加した。
ブラウザやMicrosoft Officeアプリから文字列をコピーした際、スタイル付きの文字列がコピーされてしまうため、スタイル付きの文字列を受け入れるアプリに貼り付けた場合、不要なスタイルが一緒に貼り付いてしまう場合が多い。純粋な文字列情報だけにするために、一旦テキストエディタに貼り付けて、もう一度コピーし直すなど面倒な作業が必要で、この面倒な作業もホットキー一発でやってしまえるようにした。
改造コードは以下の通り。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 |
@powershell -windowstyle hidden -NoProfile -ExecutionPolicy Unrestricted "&([ScriptBlock]::Create((cat -encoding utf8 \"%~f0\" | ? {$_.ReadCount -gt 2}) -join \"`n\"))" %* @exit /b Add-Type -AssemblyName System.Windows.Forms; $clipboardText = Get-Clipboard -Format Text if ($clipboardText -ne $null) { # クリップボードにテキストがある場合は、テキストのみを取り出して再度クリップボードに格納する $OutputEncoding = [System.Text.Encoding]::GetEncoding("Shift-JIS") $clipboardText | Clip } $clipboardImage = Get-Clipboard -Format Image if ($clipboardImage -ne $null) { # 名前をつけて、ダウンロードフォルダに保存 [String]$fileName = (New-Object -ComObject Shell.Application).NameSpace('shell:Downloads').Self.Path + "\" + (Get-Date).ToString("yyyyMMdd_HHmmss") + ".png"; $clipboardImage.Save($fileName); } |
前回の記事と同様に、ホットキーに割り付けて使用する。この作業もスクリーンキャプチャ画像をファイルに落とす作業以上に頻繁に行う作業だったので、効果抜群と予想する。
コメント