ショートカットを相対パスで指定する
ふと、できたらいいな と思ったのでググってみた。
「できる」と「できない」が2:8ぐらいのようだ。
できる派
http://scripting.cocolog-nifty.com/blog/2008/01/post_4a6a.html
できない派
http://oshiete1.goo.ne.jp/kotaeru.php3?q=213981
http://questionbox.jp.msn.com/qa1288278.html?StatusCheck=ON
http://q.hatena.ne.jp/1119054020
「できる」場合の方法
# Windows2000で実験した。
ショートカットに相対パスを指定する。: Windows Script Programmingに詳しい情報がある。
- 何でもいいのでショートカットを作成(既存のショートカットのコピーでも可)
- ショートカットのプロパティを開く
- 作業フォルダ欄を空にする
- リンク先欄に %windir%\system32\RunDLL32.exe Shell32.dll,ShellExec_RunDLL "相対パス" と入力
- ………OK?
エクスプローラからショートカットファイルをダブルクリックしたときのカレントディレクトリはショートカットファイルの場所
もし、ショートカットの作業フォルダを指定すると、そこからの相対パスになります。なので、ショートカットの作業フォルダは、空にしておきます。
との記述だが、どうもRunDLL32.exeのあるディレクトリ(つまり%windir%\system32)をカレントディレクトリとして、そこからの相対パスを指定するといいようだ。("scrnsave.scr"と指定すると、スクリーンセーバーは起動できた)
…system32からの相対パスを記述するのは面倒だし、ドライブの変更に対応できない気がする。(試してないけど)
結論
ここでは、「できない」という結論とする。
しかし、このまま引き下がるのもアレだ。
バッチを書く
単純に
Call "相対パス"
と書いてみる。これはうまくいく。が、DOS窓が開きっぱなしになってしまうので非同期実行する。
Start "相対パス"
とりあえずOK。一瞬黒いものが見えるが気にしない。