シンボリックリンク
どうしてこの便利な機能が、Windowsにはないんだろう?
といらっとくることがありまして。
ぐぐったら、、、ありますね。
junction。
どうやら、原理的にはシンボリックリンクじゃないようですけど、、、
動作は同じなので、期待値です。
いろいろあるようですが、インストールをしたくないので、junction.exeを使いました、、、。
が、最初の起動がレジストリを書き換えてくれたことでしょう。
ま、それくらいは良いか。
ただ、いくつか不満が。
ええ、シェル拡張のソフト入れれば、いいんでしょ?
ただ、それはしたくない環境なの。
ということで、バッチスクリプトで、同じ場所にテキストファイルを置くことで管理。
そのスクリプト。
@echo off rem シンボリックリンク :batInit rem 初期設定部 set trgtPath= set lnName= set mode= set mngFile=symbolic_link.txt set bakFile=%mngFile%.bak if "%~1"=="" goto batHelp :batPara rem パラメータ解析部 if "%~1"=="" goto batMain if "%~1"=="-?" goto batHelp if "%~1"=="--help" goto batHelp if "%~1"=="-d" ( set trgtPath=%~dp2 set lnName=%~n2 set mode=del goto batMain ) if "%~1"=="-s" ( if "%~2"=="-q" ( set trgtPath=%~dp3 set lnName=%~n3 ) else ( set trgtPath=%~dp2 set lnName=%~n2 ) goto batMain ) set trgtPath=%~dp1 set lnName=%~n1 set mode=make goto batMain :batHelp rem ヘルプ表示部 echo usage : %0 [-d] ^ [^] echo option echo d : Delete the specified junction echo\ echo usage : %0 [-s] [-q] ^ echo s : Recurse subdirectories echo q : Don't print error messages (quiet) if "%~1"=="--help" ( echo\ echo example: echo %0 d:\link c:\winnt echo %0 -d d:\link ) echo\ goto batEnd :batMain rem 主処理部 rem (悪いと思うが、著作権表示が邪魔ったいのでスキップする) for /F "usebackq skip=4 tokens=1,2,3*" %%I in (`%KTERMPATH%bin\junction.exe %*`) do ( echo %%I %%J %%K %%L set result=%%K ) if exist %trgtPath%%mngFile% ( attrib -H %trgtPath%%mngFile% ) if "%mode%"=="make" goto batPastMake if "%mode%"=="del" goto batPastDel goto batFin :batPastMake if not "%mngFile%"=="" ( echo %lnName% %result%>> %trgtPath%%mngFile% ) goto batFin :batPastDel if exist %trgtPath%%mngFile% ( for /F "tokens=1*" %%I in (%trgtPath%%mngFile%) do ( if not "%%I"=="%lnName%" ( echo %%I %%J>> %trgtPath%%bakFile% ) ) del /F %trgtPath%%mngFile% if exist %trgtPath%%bakFile% ( ren %trgtPath%%bakFile% %mngFile% ) ) goto batFin :batFin if exist %trgtPath%%mngFile% ( attrib +H %trgtPath%%mngFile% ) :batEnd rem 終了処理部
ln.bat って名前で、パスの通ったところに置くと、それっぽい感じに使える。
うむ、余は満足じゃ。