高見知英のかいはつにっし(β)

高見知英のアプリケーション開発日誌 のほか、地域活動などの活動報告ブログ。

うわぁ、大変だ

 完成した実行ファイルをいちいちUPXで圧縮するのも面倒なので、upxを自動実行するバッチファイルでも書いてみようと思ったら…。なんと失敗して、一気に195個ものコマンドプロンプトが(警告音が鳴ったのでそこで何らかの抑制がかかったらしいです)(^^ゞ
まあ、ウィルスやいたずらに使うにしても、こんなのネタにもなりませんし、書きますと、こんなのです。

start upx *.exe

 たったこれだけ、何を間違えたかこれだけで、コマンドプロンプトが無限に出てきて、これを実行し続けます。
もちろん、結果何も実行されない(コマンド自体解釈されてないようです。start 単体だけ認識してやってるのかも知れません)です。コマンドプロンプトはAlt+F4で閉じられないし、これだけ多いとGeoShellの場合、"これらを閉じる"メニューが消えてしまうし、面倒なことと言ったら*1。 
 いちおう、なんとか全部片づけましたけどね(^^ゞ100個までは、ウィンドウの×ボタンを押すなり、ポップアップメニューを開いて、メニュー項目を右クリック→キーボードのC*2を押す を繰り返すと減らせます。100を切ったあたりから、メニューに"これらを閉じる"が戻ってきますので*3、それをクリックすれば残りすべて消えてくれます。 ふぅ、大変な目にあった(^^ゞ
 ちなみに、検証のためにもう一度実行してみたところ、あわてず早めに×ボタンを押し続ければ、100個起動する前に止まるようです。そしたらのこりはメニューでいっぺんに終了できますね。
同じ事態を起こしてしまった あるいは、起こされてしまった人は、あわてずに対処しましょう(ーー;)


 結局、Perlスクリプトで

exec "upx *.exe *.dll";

と書いたのを使って解決しましたとさ。

*1:GeoShellユーザーのために説明しますと、GeoShellはWindowsXPのExplorerみたいに、同種のタスクをまとめて表示する機能があるんです。で、同じくそれらすべてを終了したり、透明度をいじったりができてしまうと。ですが、ふつうのメニューをオーナードローするという形で実装されてるため、あまりに大量のタスクがあると、どこかで登録できなくなって、後半のメニュー項目がカットされてしまうのです

*2:"閉じる"のアクセラレータキーになってるので

*3:ポップアップメニューを表示してるなら、再度生成させるため一旦消さないとダメです