俺的にツボにはまり、大活躍をしているAutoHotkey。
バッチ的な処理もできるし、GUIも比較的簡単(?)に作ることができる。
GUI周りで調べ物をしていた時に発見。
プログレスバー。
Windowsでもファイルをコピーする時とかに、進捗に応じてバーがもりもり伸びていくアレだ。
今作っているツールに組み込みたくなってきた。
どんなツールかというと・・・
ブルスタ(BlueStacks)のインスタンス(VM的にはストレージ)のファイルの
読み書きが頻繁に行われるので、実体はRAMDiskに置いてシンボリックリンクを張っている。
普段使っている時はそのままで問題ないんだけど、ブルスタのバージョンをアップデートする時に
そのままアップデートしてしまうとシンボリックリンクが切れて実体になってしまう。
単純に更新のあったファイルを上書きしていくだけであれば、こういうことは起きない。
詳細はわからないけど、多分コピーとか余計なことをしている気がする。
なのでアップデートする時は
- シンボリックリンクの名前を変更する(G:\BlueStacks_nxt → G:\BlueStacks_nxt_)
- RAMDiskからフォルダを移動(R:\BlueStacks_nxt → G:\BlueStacks_nxt)
- 念のためバックアップ(G:\BlueStacks_nxt (copy)→ G:\bk\BlueStacks_nxt)
- ブルスタのバージョンアップ
- 動作確認
- OKだったらRAMDiskにフォルダを移動(G:\BlueStacks_nxt → R:\BlueStacks_nxt)
- シンボリックリンクの名前を変更する(G:\BlueStacks_nxt_ → G:\BlueStacks_nxt)
※バックアップはしばらく残しておく
という手順を取っている。
これが面倒なので1~3と6~7を自動でやってくれるツールだ。
やってることはMOVEとCOPYだけなんですぐ完成した。
4のバージョンアップもやろうと思えば自動化できるけど、ブルスタを信用していないのでここは手動。
AutoHotkeyでのフォルダ操作はFileCopyDirやFileMoveDirを使えば良いので楽勝。
扱うファイルが大きい(どんどん肥大化して9GBぐらいのがゴロゴロと)ので、移動やコピーに時間が掛かる。
進捗状況がわかれば良いのに と思っていたらプログレスバーがあった。
これを組み込んだら良いじゃないか。
どれどれ使い方は・・・?
Gui, Add, Progress [, Options, Text]
OptionsはGui, Addに使うようなもの、Textは初期値
使い方がわからんw
簡単にGUIを組んで表示させてみる。
正確には・・・
で、どうしろと?
軽くググったけどサンプルがない。
俺が想像していたのは、
MOVEやCOPYに何か引数があってプログレスバーに反映できる
とか
コピー元の全容量でコピー先の容量を割ってその値をプログレスバーに反映する
をコピー中に一定間隔でグルグル回す
だった。
前者は、コマンドが元、先、上書き有無しか引数を持っていなくて玉砕。
後者は、そもそも移動やコピーが終わるまで次の処理に進まないので詰んだ。
何のためにあるんだGUIのProgress・・・。
というかどうやって使えば良いんだ。
・・・まさか・・・
Gui, Add, Progress, x15 y+10 w220 Vbar
Gui, Show
Return
progressCheck:
GuiControl,, bar, 10
Sleep, 1000
GuiControl,, bar, 20
Sleep, 1000
GuiControl,, bar, 50
Sleep, 1000
GuiControl,, bar, 70
Sleep, 1000
GuiControl,, bar, 71
Sleep, 1000
GuiControl,, bar, 100
Return
GuiClose:
ExitApp
予想通り 1秒ごとに 10、20、50、70、71、100 とバーが伸びた。
違う。俺が望んでいたのはこんなのじゃないッ!!w
更に調べていたら、参考になるページがあった。
AutoHotkeyの標準コマンドだけでは進捗情報付きのファイルコピーはできません。
無理だったかw
この方はDllCallを使用していた。
DllCallはまだ未知の領域なんだよなぁ・・・C怖いw