Windows(10/11)では通常、Batchコマンド(拡張子が.bat/.cmdのスクリプトファイル)はスタートアップにピン留めすることができません。
またバイナリ実行形式コマンド(拡張子が.exeの実行形式ファイル)は、ひとつ目はピン留めできますが、同一の.exeファイルをもう一つピン留めしようとすると、これもできません(同じプログラムをコマンドライン引数を変えて複数ピン留めしたい、なんていうことができないのです)。
これらを解決する裏技
裏技のしくみ
WindowsスタートメニューにはBatchコマンドをピン留めすることはできません。でも、.exeコマンドをピン留めすることはできます。
だったら、まずダミーの.exeコマンドをスタートメニューに仮留めしておいて、その参照先を目的のBatchコマンドに書き換えてやれば良いわけです。
また、同一名称(同じファイル名)の複数の.exeコマンドは、たとえ与えられたコマンドライン引数が異なっていても、スタートメニューに同居させてピン留めすることはできません。しかし、ファイル名が異なっていれば別の.exeファイルと見做され、同居ピン留めすることができます。
そこで、ファイル名の異なる複数のダミー.exeファイルを用意してそれぞれをスタートメニューに仮留めし、その参照先を同一の本番コマンド(Batchでも.exeでも)に書き換えればOKです。この場合、用意するダミー.exeファイルは、ファイル名さえ異なっていれば、中身が同一であっても構いません。同一.exeファイルを違う名前にコピーして使ったって良いわけです。
裏技の手順(の一例)
1.何でもいいからダミー.exeファイルを用意します
2.実行ファイル名をその時点の年月日時分秒(YYYYMMDDhhmmss.exe形式)にリネームします(ファイル名が未来永劫ユニークであるように)
私は上記二つの手順を、MSYS2 gcc環境下で、下記のOne Liner Shell Scriptを使って行っています。
#!/usr/bin/bash
printf "#include <stdio.h>\nvoid main(){ printf(\"Hello, World\\\n\"); getchar(); }" | gcc -x c - -o `date +%Y%m%d%H%M%S`
3.用意したダミー.exeファイルを、マウス右クリックのプルダウンメニューで「スタートメニューにピン留め」します
4.スタートメニューを表示させ、そこにピン留めされたダミー.exeアイコンをマウス右クリックして、プルダウンメニューの「ファイルの場所を開く」をします
5.スタートメニューフォルダが開かれ、そこにダミー.exeへのショートカットがあるので、これを右クリックし、プルダウンメニューで「プロパティ」を開いて・・・
- 「リンク先」を任意の本番コマンド.bat/.cmd/.exeの絶対PATHとそのコマンドライン引数に変更
- ピン留めされたアイコンを変えたいなら、「アイコンの変更」で
6.プロパティを閉じて、最後にショートカットの名称も任意のものに変更します
これで、スタートメニューに目的の.bat/.cmd/.exeファイルが、変更した名前とアイコンで出現します。
7.用意したダミー.exeファイルはもう用済みです。消去して構いません
8.さらに、同じ.bat/.cmd/.exeファイルをコマンドライン引数違いでもう一つピン留めしたいなら、上記2.以下を繰り返します(ダミー.exeファイル名の年月日時分秒は更新されているので、ファイル名は重複しない ⇒ 別の.exeなので、ピン留めできる)
この裏技で、Windowsスタートメニューの適用範囲が広がります。