「ファイル名を指定して実行」用のショートカットを右クリックメニューから作成する


目次

1.はじめに
2.使用イメージ
3.ダウンロード
4.インストール
5.使用方法
6.アンインストール
7.スクリプトの解説
8.おまけ

1.はじめに

Windowsでは、PATHの通ったフォルダにショートカットを作成しておく事で、「ファイル名を指定して実行」からあらゆるリンク(フォルダ・ファイル・ウェブサイト)を呼び出すことが出来ます。
参考:「ファイル名を指定して実行」を極める - Qiita

自分の好きな名前でショートカット名を作成出来るので、フルパスを覚える必要がなくなり大変便利です。一方で、この為には以下の事前準備が必要です。
1.ショートカットを作成
2.ショートカット名を指定
3.PATHの通ったフォルダに設置

本記事では、右クリックメニューの「送る」からスクリプトを起動する事で、1と3を省略出来る様にしたいと思います。

2.使用イメージ

以下の様な、少し深い階層にあるtest.txtのショートカットを作成して呼び出してみます。

右クリック⇒送る⇒neutrino(スクリプトの名称です。お好みで変更可)を実行すると…

ショートカット名を入力するウィンドウが出ます。入力してOKを押してください。

これで、前述の1~3が実行されたことになります。早速起動してみましょう。

はい、無事起動出来ました。

3.ダウンロード

GitHubに置いてあります。
hilco0527/neutrino - GitHub

「Download ZIP」でファイルをダウンロードし、中身を全てデスクトップにコピーして下さい。

4.インストール

どこでも良いのでショートカットを保存しておくフォルダを作り、PATHを通してください。
参考:「PATH を通す」の意味をできるだけわかりやすく説明する試み - Qiita

Setup.vbsを実行するとフォルダ選択画面が開くので、作成したフォルダを選択してください。以下が実行されます。
1.選択したフォルダへのスクリプトの設置
2.右クリックメニュー用設定(「送る(sendto)」フォルダにスクリプトのショートカットを作成)
3.直接起動用設定(選択したフォルダにスクリプトのショートカットを作成)

完了後、デスクトップにコピーしたファイルは削除して問題ありません。

5.使用方法

以下の起動方法が使用出来ます。
1.右クリックメニュー⇒送る⇒neutrino
2.ファイル名を指定して実行⇒neu

1については前述「2.使用イメージ」の通りです。2については、インストール時の直接起動用設定により、「ファイル名を指定して実行」で「neu」を実行するとスクリプトが起動する様になっています。この場合、クリップボードの内容を元にショートカットが作成されます。ウェブサイトなどはこの方法でショートカットを作成可能です。

また以下の様に、直接引数を与えることも可能です。既に作成済みのショートカットに対し、さらに短い名称を指定する事も可能です。

起動に使用する名称の変更は、インストール時の2と3で作成されるショートカットの名称を変更する事で可能です。「送る」フォルダは「shell:sendto」を実行すると開けます。

6.アンインストール

以下を削除してください
1.インストール時に作成したフォルダ
2.PATHに設定した上記フォルダ
3.「送る」フォルダのショートカット(「shell:sendto」を実行すると開けます)

7.スクリプトの解説

①ファイル操作に使用するオブジェクトの初期化。

neutrino.vbs
Set wsh = CreateObject("WScript.Shell")
Set fso = WScript.CreateObject("Scripting.FileSystemObject")

②スクリプトのあるフォルダのパスの取得。PATHを通したフォルダの情報を持ちたくなかった為、スクリプト本体をそのフォルダに入れて、起動時に取得するようにしています。

neutrino.vbs
folderName = fso.getParentFolderName(WScript.ScriptFullName)

③ショートカット作成対象が引数として与えられている場合にはそれを使用します。右クリックメニューから起動された場合はフルパスが引数として与えられます。

neutrino.vbs
If WScript.Arguments.Count <> 0 Then
    target = WScript.Arguments(0)

④引数がない場合は、クリップボードの内容を使用します。

neutrino.vbs
Else
    Dim ObjHTML
    Set objHTML = CreateObject("htmlfile")
    target = Trim(objHTML.ParentWindow.ClipboardData.GetData("text"))
End If

⑤ここから⑧まではループ処理です。ショートカット名を入力するボックスを表示します。ブランクの場合ループを抜け、入力があれば作成するショートカットのフルパスを生成します。

neutrino.vbs
linkName = InputBox("Please enter the shortcut name", "neutrino")
If linkName = "" Then
    Exit Do
Else
    fullPath = folderName & "\" & linkName & ".lnk"
End If

⑥既に同名のショートカットが存在する場合は上書き可否を確認し、問題なければショートカットを作成(上書き)しループを抜けます。

neutrino.vbs
If fso.FileExists(fullPath) = True Then
    ans = MsgBox("The shortcut name already exist. Do you overwite?", vbYesNoCancel, "neutrino")

    If ans = vbYes Then
        Set sc = wsh.CreateShortcut(fullPath)
        sc.TargetPath = target
        sc.save
        Exit Do

⑦上書きしない場合にはショートカットは作成しません。ループも抜けず⑤に戻ります。

neutrino.vbs
ElseIf ans = vbNo Then

Else
    Exit Do
End If

⑧そもそも同名のショートカットが存在しない場合は、ショートカットを作成しループを抜けます。

neutrino.vbs
Else
    Set sc = wsh.CreateShortcut(fullPath)
    sc.TargetPath = target
    sc.save
    Exit Do
End If

⑨オブジェクトを解放し終了。

neutrino.vbs
Set wsh = Nothing
Set fso = Nothing
Set sc = Nothing

8.おまけ

以下の様なbatファイルを作成し実行すると、複数のショートカットを同時に起動出来ます。batファイル自体もどこかに置いておき、ショートカットを登録しておくと便利です。ぜひ使ってみてください。

multitest.bat
start test1
start test2
start test3