サマリ

「リンク先」が cmd.exe /c "C:\Path\to\hoge.bat" であるようなショートカットをスクリプトで作成したいです。どうやったらこれは実現できますか。

詳細

バッチファイルがあった場合に、このファイルを実行するようなショートカットを作成して、それをタスクバーに追加することで、 Windows + NumberKey で、バッチファイルをキーボードショートカットから実行する、といったことをよくやります。

そのために、作成するショートカットファイルは、以下の手順で普段は作成しています。

  1. タスクバーから実行したい bat ファイルのショートカットを作成する
  2. 右クリックでショートカットのプロパティを編集し、 リンク先を C:\Path\to\bat.bat から cmd.exe /c "C:\Path\to\bat.bat" に変換する
  3. このショートカットをタスクバーに追加する

今回、この手順を自動化したいと考えました。

以下のように記述をすることで、普通のショートカットの自動生成はできることを確認しました。

Option Explicit

Dim WSH,sc
Dim linkTarget

linkTarget = "C:\Users\joe\Desktop\copy_mail.bat"
REM linkTarget = "cmd.exe /c ""C:\Users\joe\Desktop\copy_mail.bat"""

Set WSH=CreateObject("WScript.Shell")

Set sc = WSH.CreateShortcut("C:\Users\joe\Desktop\copy_mail.lnk")
sc.TargetPath = linkTarget
sc.save

Set sc = Nothing
Set WSH = nothing

しかし、 REM の部分を外して、今回やりたいリンク先である、バッチの実行コマンドでもってショートカットを作成しようとすると、次のエラーが発生します。

スクリプト: C:\Path\to\bat.bat
行:        12
文字:      1
エラー:    プロシージャの呼び出し、または引数が不正です。
コード:    800A0005
ソース:    Microsoft VBScript 実行時エラー

これは、どうやったら解消でき、どうやったらバッチファイルの実行コマンドをリンク先に持つショートカットを作成できますでしょうか。