NYAGOS は cd ショートカット.lnk
という書き方をサポートしている。
これは Go言語で実装した内蔵コマンドの cd
で直接サポートしているわけではなくて、
nyagos.d\cdlnk.lua
という Lua スクリプトで cd
のエイリアスを書き、
その中で nyagos.create_object("WScript.Shell")
で COM オブジェクトを生成、
それでショートカットの宛先を問い合わせている。
この「cd ショートカット.lnk
」を便利に使うため、
自分は %USERPROFILE%
の下に開発ソースフォルダーへのショートカットを多数作っている。
ショートカットは無論エクスプローラでも作れるが、いちいちマウスで操作するのも
面倒なので、lnk.js
という JScript を書いている。具体的には下記のようなスクリプトになる。
if( WScript.Arguments.length == 1 ){ var wshShell = new ActiveXObject("WScript.Shell"); var lnkSrc = wshShell.CreateShortcut(WScript.Arguments.Unnamed(0)); if( lnkSrc == null ){ WScript.Echo("Fail to create ShortCut Object"); } else { WScript.Echo( " " + lnkSrc + "\n<-- " + lnkSrc.TargetPath ); } WScript.Quit(1); } if( WScript.Arguments.length < 2 ){ WScript.Echo( "Usage: cscript lnk.js FILENAME SHORTCUT {Option=Value}... make shortcut\n" + " cscript lnk.js SHORTCUT ... print shortcut-target") WScript.Quit(1); } var fsObj = new ActiveXObject("Scripting.FileSystemObject"); var src = fsObj.GetAbsolutePathName(WScript.Arguments.Item(0)); var dst = fsObj.GetAbsolutePathName(WScript.Arguments.Item(1)); if( fsObj.FolderExists(dst) ){ dst = fsObj.BuildPath(dst,fsObj.GetFileName(src)); } if( dst.length >= 4 && dst.substring(dst.length-4) != ".lnk" ){ dst += ".lnk"; } var wshShell=new ActiveXObject("WScript.Shell"); var shortcut1=wshShell.CreateShortcut(dst); if( shortcut1 == null ){ WScript.Echo("Fail to create ShortCut Object"); WScript.Quit(1); } shortcut1.TargetPath=src; if( WScript.Arguments.length >= 3 ){ for(var i=2 ; i < WScript.Arguments.length ; i++ ){ var equation = WScript.Arguments.Item(i); var pos = equation.indexOf("=",0); if( pos >= 0 ){ equation="shortcut1." + equation.substring(0,pos) + "=\"" + equation.substring(pos+1).replace(/\\/g,"\\\\") + "\""; WScript.Echo(equation); eval(equation); }else{ WScript.Echo("Equal(=) not found: " + equation) } } } shortcut1.Save() WScript.Echo(" " + src + "\n--> " + dst); WScript.Quit(0)
こういうのを作っておくと、Visual Studio の開発フォルダーから
cd ~\PATH\TO\DEVELOP\FOLDER1
lnk.js . ~
とかできる。すると
cd FOLDER1.lnk
だけで深いフォルダーへ一気に移動できて、入力が楽になる
無論、mklink でも同様のことが可能だが、そうするとツールによっては見かけのパス構成が変わってしまって、いろいろ不都合がでる場合もある。こちらの方が手軽で有用ではないかと思われるが、いかがだろうか。