logo
Published on

Windows 10のクリップボードのテキストを自動で編集する

Authors

Windows 10のクリップボードのテキストを自動で編集するプログラムについて紹介します。

またまたditto記事です。

この関数ではdittoというクリップボードマネージャーから生成されたsqliteデータベースファイルを使用しています。なのでインストールしてください。

Ditto download | SourceForge.net

以下のbashスクリプトを使ってどうぞ。


modifyWindowsClipboardText(){

while [ true ];
do

cp /mnt/c/Users/user/AppData/Roaming/Ditto/Ditto.db $TMPDIR/modifyWindowsClipboardText_Ditto.db

WindowsClipboardTextById="$(sqlite3 $TMPDIR/modifyWindowsClipboardText_Ditto.db "$(cat <<'EOT'
SELECT mText from Main
order by lDate desc
LIMIT 1 OFFSET 0
EOT
)")"

[[ "${WindowsClipboardTextById}" =~ ^https:\/\/user.xsrv.jp\/images\/ss\/ShareX_ScreenShot_.*\.(png|jpg|gif|mp4)$ ]] && {
  echo "${WindowsClipboardTextById}" | sed -Ee "s/(.*)/!\[\1\]\(\1\)/g" | clip.exe ;
  printf "Modified the Windows clipboard. : sharexUrl" ;
  sleep 2s ; continue ;
} || {
  : ;
}

echo -ne "$(isodate)\tNothing updated on the clipboard.\033[0K\r"

sleep 2s

done

}


isodate ()
{
    date +%FT%T%Z
}

何をしているかというと、 僕はsharexを使っていて、スクリーンショットを撮影したら自動でクリップボードにURLがコピーされるように成っています。このURLをだいたい友人と共有したり記事の文章に貼り付けたりするんですが、この時Markdown形式にテキストエディタから編集する手間が生じます。まぁ、5秒くらいでできることなんですが。 このURLをMarkdownに置換する作業を自動化しています。

  1. 最新のクリップボードテキスト(一意のもの)をデータベースから取得
  2. テキストデータが正規表現に一致したら、それに応じた処理をしてさらにクリップボードにコピー

データベースにはじめて登録された一意のテキストデータにのみ処理をするようにしているので、例えばテキストデータhttps://user.xsrv.jp/images/ss/ShareX_ScreenShot_51c9ea5f-a16e-44ce-9469-1d313ced642a.pngをもう一度クリップボードにコピーしても、再度同じ処理がされることはありません。

URLとして使いたいんだけどなぁと言う場合には、ctrl + +から二番目にあるURLをコピーしてやれば、いいわけです。Markdownが使いたければそのまま一番目のものをペーストすればいい。

と、いったようなことをやっています。