2016年11月4日金曜日

エクスプローラーの検索結果から作成したショートカットを、普通のショートカットに戻したい。

初めに結論

目的を達成するために、WSH(VBScript)でスクリプトを書いた。

  • ReCreateShortcuts.zip (2 KB)
    検索結果から作成したショートカットを、普通のショートカットに変換するスクリプト。
    • ここでいう「ショートカット」とは、拡張子が「.lnk」のファイル。
      拡張子が「.url」等のファイルは、対象外(というか、意味をなさない)。
  • 動作確認環境: Windows 7 Professional (Service Pack 1) 64ビット
  • 誰かの役に立つかもしれないので、MITライセンス の下で公開。
  • 上記のzipファイルには「ReCreateShortcuts.vbs」というファイルが入っており、これがスクリプト本体。

スクリプト(ReCreateShortcuts.vbs) の使い方

変換したいショートカットファイル(複数可)を、ReCreateShortcuts.vbs にドロップするだけ。

対象のショートカットは、削除→再作成される。
もし万が一があると困る方は、対象のショートカットファイルをバックアップしてから当スクリプトを実行すること。

筆者は 当スクリプトを「送る」(shell:sendto) に配置して運用している。


困りごとの概要

エクスプローラーで検索した結果 をコピーしてショートカットファイルは、通常のショートカットファイルとは異なり、あくまで 検索結果へのリンク となる。(ショートカット先への直接リンクにはならない)

具体的には、たとえばリンク先が
search-ms:displayname=検索場所%3A%20Program%20Files&crumb=すべてのテキスト:Microsoft&crumb=location:C%3A%5CProgram%20Files
などになり、直接リンク(「C:\Program Files\Microsoft Office」など) にはならない。

図1. エクスプローラーの検索結果 から作成したショートカットを開いた場合:
search-ms:displayname=検索場所%3A%20Program%20Files&crumb=すべてのテキスト:Microsoft&crumb=location:C%3A%5CProgram%20Files

筆者個人のニーズとしては、たとえ検索結果から作成したショートカットであろうとも、ショートカット先への直接リンクとして機能してほしい。

図2. 望む挙動: (ショートカット先への直接リンク)
C:\Program Files\Microsoft Office

上記の挙動は、もしかしたら設定レベル(レジストリか何か)で変更できるのかもしれないが、手っ取り早くスクリプトを書いて解決した。

実現方法

WSH(VBScript)で、WScript.Shellを使用して対象のショートカットファイルを再作成するだけ。再作成により、検索結果の情報が取り除かれて、いわゆる普通のショートカットに戻る。

ソースコード

※ソースファイルのエンコーディングは Shift_JIS (厳密には、コードページ932) になっている。ほかのエンコーディングに変えてしまうと、おそらく動作しない。

2 件のコメント :

  1. 同じことで困っておりましたが、公開頂いたスクリプトで
    解決しました。
    本当に助かりました。

    返信削除