ぺんちゃん日記

食と歴史と IT と。 Web の旅人ぺんじろうが好奇心赴くままに彷徨います 。

【AutoHotkey】バラバラのスクリプトを一つにまとめる。

f:id:yasushiito:20190403184928p:plain
いくつかのスクリプトでショートカットを実現したことでかなり作業環境を快適になりました。
しかし複数のスクリプトを同時に常駐させているので、タスクトレイアイコンが鬼のように並んで壮観な眺めになっています。
スクリプトは細かく分けた方が debug しやすいので意識的に分けていたのですが、これはあまり好ましくありませんね。

そこでバラバラのスクリプトを一つにまとめることはできないかと調べてみました。

qiita.com

どうやらコピーコマンドにBオプションを与えればファイルを結合できるようですね。
コマンドプロンプトから次のようにコマンドを実行します 。

cd %userprofile%\Documents\ahk
copy /B /Y *.ahk ex\full.ahk

%userprofile%の部分はホームディレクトリ(マイdocumentやマイピクチャが入っているディレクトリ)を意味します。
まあスクリプトファイルはどこに置いてもかまわないのですが、私は個人用のフォルダの下にAutoHotkeyスクリプトを入れるためのフォルダを作っています。
そのディレクトリに移動してからコピーしてますね 。
ワイルドカードを使って拡張子が ahk のファイル全てを取り出して結合した結果を出力します。
Y オプションは上書き確認を抑制します。
これを指定しないと2回目の実行で、既存のファイルがあるが上書きして良いかと確認されます。
YES と答える手間が一つ増えるので質問しないように指定するんですね。
もちろん操作ミスで大切なファイルを書き換えられる恐れもあるので必ず一度は実行結果を確認してからYオプションを与えてくださいね。
この例ですと、マイdocumentの下にある ahk ディレクトリに含まれる Auto HOT key のスクリプト全てを、さらに下のディレクトリexにfull.ahkというファイル名で結合されたスクリプトを作ります。
これからはこのファイルをひとつだけ実行すればショートカットキーすべてを 有効にできます。
これでタスクトレイの常駐プロセスアイコンがスッキリします。

注意点としては二つ。

ユーザがアプリの起動確認などの確認作業をしていることが前提の「待ち時間型」スクリプトは、結合することで予期しない動作を発生させる恐れがあります 。
まだアプリが起動していないのにウィンドウ探しても見つかりませんからね。
それとスクリプトの結合については、[個別ファイルを修正]して[結合]という手順を必ず守ってくださいね。
これから実行するのは結合スクリプトなので、個別ファイルを修正しても、こちらは実行されませんよね。
当たり前すぎる話ですが人間にはうっかりはあるものです。
結合スクリプトは編集しないことにも注意してくださいね。
結合スクリプトを編集すると、結合処理をした瞬間に修正した内容が上書きされてしまいます。
動いて喜んだのもつかの間、 儚くも消えてしまうととっても悲しいです。

追記。

結合する時はファイルの文字コードに注意してください。
日本語を取り扱うために文字コードを UTF 8 Bom 付きで保存していると、ファイル結合時にbomがくっついて正常に動作しません。
私は今のところ文字コードを Shift JIS で扱っています。