33091


## サマリ

「リンク先」が `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. このショートカットをタスクバーに追加する

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

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

[code]

    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
    
[/code]

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

[code]

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

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


CC BY-SA 3.0
2017-03-04T08:26:58.697
33089
2017-03-04T08:38:20.127
754
question
windows vbs
リンク先が `cmd.exe /c "C:\Path\to\hoge.bat"` であるようなショートカットを作成したい


[TargetPath プロパティ](https://msdn.microsoft.com/ja-jp/library/cc364494.aspx)には

> このプロパティに設定できるのはショートカットのリンク先パスのみです。ショートカットへの引数は Argument プロパティに設定します。

と説明されています。`cmd.exe /c "C:\Path\to\bat.bat"`を実行したいのであれば

[code]

    sc.TargetPath = "cmd.exe"
    sc.Arguments = "/c ""C:\Users\joe\Desktop\copy_mail.bat"""
    
[/code]

が実行されるようにスクリプトを記述する必要があります。


CC BY-SA 3.0
2017-03-04T08:38:20.127
33091
2017-03-04T08:38:20.127
4236
33089
answer