任意のディレクトリをドライブ化する

はじめに
PC内のとあるディレクトリを、ドライブ化(E:とかF:とか)したい事ってありませんか?
自分はあります。ていうか、ありました。


以前書いたLinkShellExtensionで、C:のルートにエイリアス(ジャンクション?)をおく、
なんて事もしましたが、なんとなく気持ちが悪い。
で探したらあるもんです。しかもWindowsに標準で。


解決策
substというコマンドがそれで、
上で書いたような処理をやってくれます。
変に凝るよりこ標準のコマンドを使うに越したことはありません。


コマンド実行例
さっそく実行。

subst x: c:\hoge\fuga

これでC:\hoge\fugaフォルダがX:ドライブになります。


割り当てたドライブの解除は

subst X: /D

とやる。


現在substコマンドで割り当てられているドライブ一覧は、オプション無しで、

subst

とやれば確認できます。


さて、これだけではsubstのヘルプ

subst /?

を見れば出てくるので、もう一捻り。


ログオン時に自動で割り当てる
このsubstコマンド、ログオフすると全て解除されます。
なので、ログオン時に毎回コマンドを実行してあげないといけない。
毎回ログオン時にsubstを実行してくれるかゆいところに手が届くソフトはいくつかあります。


自分の前者のSubst Fron-endを使ってましたが、
何かこのコマンドのために新たにソフトを入れておくのが億劫になったり、
あと起動の瞬間ウィンドウが見たりするので、違う方法を探しました。


良くあるのが、コマンドの内容をバッチファイルとして作成して、スタートアップフォルダに入れておく方法。


う〜ん、芸が無い。
というわけで、別の方法を試してみました。


ログオンスクリプトを使ってみる
表題のとおり。『ログオンスクリプト』を使ってみます。
ログオンスクリプトの詳細は、各自調べてもらうとして(オイ!)、
やり方を書いてしまいます。


1.グループポリシーエディタを起動する
 コマンドプロンプト、又は『ファイル名を指定して実行』で「gpedit.msc
 
2.起動したら左ペインのツリーから
 『ユーザの構成』→『Windowsの設定』→『スクリプト(ログオン/ログオフ)』とたどる
 
 
3.右ペインにテキストファイルアイコンが2つ、『ログオン』『ログオフ』が出るはずなので、
 『ログオン』をダブルクリックして『ログオンのプロパティ』シートを開く
 
4.追加ボタンを押して『スクリプトの追加』ダイアログを開く
5.『スクリプト名(N)』に「subst」を、『スクリプトのパラメータ(P)』に「X: "C:\hoge\fuga"」の様に入力してOKを押す
 

以上の手順で、次回のログオン時には自動でsubstが実行されるようになるはずです。


使用例
で、どう使っているのか。

自分は業務で、LoutsNotes等グループウェアを使っていますが、これの添付ファイルが若干曲者で、
最初は表示されているファイル名どおりにローカルにキャッシュするのですが、
Notesを終了せずに同じファイルをダウンロードすると、ファイル名がランダムになります。
おまけのファイルのサイズに関わらず、何度でもローカルにキャッシュするので、
重いファイルに当たると、Notesがフリーズすることもしばしば。


そこで、Notesのキャッシュフォルダを上記の方法でドライブ化して、
すぐに添付ファイルにアクセスできるようにしているわけ。
具体的には、ログオンスクリプトのパラメータに
n: "C:\Documents and Settings\{USERNAME}\Local Settings\Temp\notesXXXXXX"と入れています。*1 *2 *3


お知らせ
半年ほど前に書いたウィジェットマネージャの概要

まぁ、自己満足で作って、さらしてみて、
他に興味がある人がいればラッキー、くらいなノリ。

なんて書いてましたが、

  • AIRからJavaプログラムを起動する方法が見当たらない
  • 仕事/生活が忙しい

という感じですっかり行き詰ってしまい、無期限停止状態です。

*1:『{USERNAME}』は適宜変更してください。

*2:"C:\Documents and Settings\%USERNAME%\Local Settings\Temp\notesXXXXXX" とやるとうまくユーザ名も展開してくれるかも(未検証)

*3:『XXXXXX』Notesのインストール時に決まるランダムな文字列