﻿# 介紹好用工具：subst ( 將任意目錄掛載成虛擬磁碟機 )

[Subst](http://en.wikipedia.org/wiki/Subst) 可以將**本機任意目錄**掛載成**本機虛擬磁碟機**，這是一個 Windows 系統內建的指令，所以幾乎每台電腦都有。當我跟其他人說這個工具時，通常得到的回應都是「這工具有什麼用？就算能掛載虛擬磁碟機也沒什麼了不起阿？有很實用嗎？」今天我就來說說比較實務的應用方式。

雖然這工具很容易使用，但我還是先說明用法吧：

**SUBST 使用說明**

```
建立路徑與磁碟機代號之間的關連。

SUBST [drive1: [drive2:]path]
SUBST drive1: /D

  drive1:        指定您要指定路徑的虛擬磁碟機。
  [drive2:]path  指定您要指定給虛擬磁碟機的實際磁碟
                 機與路徑。
  /D             刪除取代的 (虛擬的) 磁碟機。

鍵入 SUBST 而不加任何參數會顯示目前所有虛擬磁碟機的清單。
```

**SUBST 使用範例**

```
# 進入 D:\TEMP 目錄
D:\>cd temp
# 將目前目錄掛載(Mount)成 K: 磁碟機
D:\TEMP>subst k: .
# 列出目前透過 SUBST 指令掛載的磁碟機<->目錄對應清單
D:\TEMP>subst
K:\: => D:\TEMP
# 刪除透過 SUBST 指令掛載的 K: 虛擬磁碟機
D:\TEMP>subst k: /d
# 確認所有 SUBST 指令掛載的虛擬磁碟機已全數卸載(Unmount)
D:\TEMP>subst
```

其實我多年前知道 [Subst](http://en.wikipedia.org/wiki/Subst) 這個工具時也覺得很沒用，但後來我自己怎麼想最多也只能想到 [Subst](http://en.wikipedia.org/wiki/Subst) 最實際的用途應該是與「遠端桌面連線」相互搭配使用。

「遠端桌面連線」的設定畫面有個「本機資源」頁籤，裡面有個「本機裝置和資源」可設定將「本機磁碟機」掛載到遠端桌面中，我們時常用這個方式在本機電腦與遠端電腦之間傳遞檔案。

 ![「遠端桌面連線」的設定畫面有個「本機資源」頁籤，裡面有個「本機裝置和資源」可設定將「本機磁碟機」掛載到遠端桌面中](https://stwillblogassets.blob.core.windows.net/files/images/external/stwillblogassets.blob.core.windows.net/44509f66d0f64f8e8a6e-image_6.png)

當你點選「詳細資料」時 (如上圖) 如果有勾選「磁碟機」時，就可以將**所有本機磁碟機**掛載到**遠端電腦**的中。

![遠端桌面連線 => 當你點選「詳細資料」時 (如上圖) 如果有勾選「磁碟機」時，就可以將所有本機磁碟機掛載到遠端電腦的中。](https://stwillblogassets.blob.core.windows.net/files/images/external/stwillblogassets.blob.core.windows.net/44ea4738effac6b99d7f-image_9.png)

而你也可以將設定**另存新檔**至目錄中，且副檔名為 **\*.rdp**

![遠端桌面連線 => 可以將設定另存新檔至目錄中](https://stwillblogassets.blob.core.windows.net/files/images/external/stwillblogassets.blob.core.windows.net/ee54bd8f3bc29e725a95-image_15.png)

所以當連到遠端電腦的桌面後，就可以在**我的電腦**看到所有**來自遠端桌面連線的磁碟**。（如下圖示）

![image](https://stwillblogassets.blob.core.windows.net/files/images/external/stwillblogassets.blob.core.windows.net/43f9a7e5c4a6dfa10524-image_12.png)

而在這些**來自遠端桌面連線的磁碟**也都有一組預設的 [UNC](http://en.wikipedia.org/wiki/Path_\(computing\)#Uniform_Naming_Convention) 路徑，如果是 X: 磁碟機，在遠端桌面的 UNC 路徑就是：

```
\\tsclient\X
```

有了「已知」的 [UNC](http://en.wikipedia.org/wiki/Path_\(computing\)#Uniform_Naming_Convention) 路徑後，就可以再搭配我之前寫過的一篇文章 [設定「捷徑」的快速鍵與注意事項](/post/2008/11/25/How-to-setup-shortcut-hotkey) 技巧來設定**快速鍵**的，當登入遠端電腦後直接按下快速鍵即可快速開啟**來自遠端桌面連線的磁碟**。

有用過這功能的人就知道，在**來自遠端桌面連線的磁碟**中瀏覽檔案是**非常慢**的，所以如果你要傳檔的路徑在 C:\\Project\\TEST\\Website\\App\_Code\\Helper\\ 目錄的話，就很有可能需要先開啟檔案總管一步一步的瀏覽目錄進去，最後才複製檔案，但整個過程可能會花你兩分鐘！

最後，也是最重要的精華就是利用「批次檔」快速掛載磁碟後直接登入遠端電腦，並搭配快速鍵快速開啟目錄。

假設批次檔名稱為 **MountThisFolderAndConnectToMyServer.bat**

```
subst k: %CD%
mstsc "G:\RemoteDesktop\MyServer.rdp"
subst k: /d
```

之後只要將這個批次檔放到任意目錄，或放到 %PATH% 定義的目錄中，之後在任意目錄輸入 **MountThisFolderAndConnectToMyServer.bat** 就會先掛載目前目錄然後連到預存的遠端連線。

除此之外，我也想不到有任何有用的應用方式，也許有人可以分享不同的觀點？

**相關連結**

-   [subst - Wikipedia, the free encyclopedia](http://en.wikipedia.org/wiki/Subst)
