argius note

プログラミング関連

Windows7でBATファイルがタスクバーに登録できないのでEXEファイルを指定

Windows7では、BATファイル(*.bat)で起動するアプリケーションが直接スタートメニューのやタスクバーやに登録できません。CMDファイル(*.cmd)やCOMファイル(*.com)も同様です。

通常はBATファイルからの起動でも、ワンライナーでEXEファイルを起動できるような場合は、BATファイルのショートカットになっているものをEXEファイルのものに変えることで、タスクバーに登録したりする「ピン止め」の状態にできるようになります。


例えばCygwinの場合は、

%CYGWIN_HOME%\bin\bash.exe --login -i

のようにすればOKです。(※%CYGWIN_HOME%=Cygwinホームディレクトリ)
これは、Cygwinをインストールしたら最初にすること - 普段はWindowsを使っているのよを参考にさせていただきました。



では、EXEが無いBATファイルだけのプログラムを登録するにはどうしたら良いのでしょう?*1
この場合は、"cmd.exe"(通常はC:\Windows\System32\cmd.exe)を使います。
まず、実行したいBATファイルを作ります。(app.batとします。)

echo BATだけのアプリ
pause

そして、このファイルのショートカットを[ショートカットの作成]または[新規作成]→[ショートカット]で作成し、「リンク先」の内容を

C:\Windows\System32\cmd.exe /C app.bat

と設定します。このショートカットを右クリックしてコンテキストメニューを開くと、「スタートメニューに表示する」「タスクバーに表示する」が選択できるようになっているはずです。
オプション/Cは、指定したファイルの処理が終わったらDOSプロンプトを終了するモードです。/Cの代わりにオプション/Kを指定すれば、処理が終わってもDOSプロンプトを開いたままにできます。オプションの詳細とほかのオプションについては、"cmd /?"を参照してください。
アイコンも設定できますので、通常のアプリのようにタスクバーに並べることができるようになります。

*1:たぶん答えは探せば見つかるのでしょうが、思ったよりも見つけるのが困難でしたので、自分で書いてみました。