嗨,Scripting Guy!

嗨,Scripting Guy!

歡迎使用 TechNet 專欄,Microsoft Scripting Guys 會在此為您解答有關系統管理指令碼的常見問題。您有關於系統管理指令碼方面的問題嗎?請將電子郵件傳送到 scripter@microsoft.com。我們無法保證能夠逐一回答每個問題,不過我們會盡力而為。

今天的問題:如何在 [我的網路芳鄰] 中建立捷徑?


如何在 [我的網路芳鄰] 中建立捷徑?

嗨,Scripting Guy!我要如何在 [我的網路芳鄰] 中建立捷徑?

-- KP

KP,您好。如果您聽到我們氣喘如牛的聲音,請見諒,因為我們像發瘋一樣到處尋找技巧高超的方法來解決這個問題。但在失敗後,我們才開始反省我們採取的方法為何不對;我們把事情搞得太複雜了。畢竟,[我的網路芳鄰] 只不過是硬碟中的一個資料夾,而「網路位置」也只不過是一個捷徑。建立網路位置有沒有可能只是在資料夾中建立捷徑這麼簡單?就由您來判斷吧:
Const NETHOOD = &H13&
Set objWSHShell = CreateObject("Wscript.Shell")
Set objShell = CreateObject("Shell.Application")
Set objFolder = objShell.Namespace(NETHOOD)
Set objFolderItem = objFolder.Self
strNetHood = objFolderItem.Path
strShortcutName = "Finance Department Public Folder"
strShortcutPath = "\\atl-finance-01\public"
Set objShortcut = objWSHShell.CreateShortcut _
    (strNetHood & "\" & strShortcutName & ".lnk")
objShortcut.TargetPath = strShortcutPath
objShortcut.Save

一開始我們定義稱為 NETHOOD 的常數並為其指定值 &H13&;我們稍後會使用它來找出 [我的網路芳鄰] 資料夾。接著我們建立兩個不同物件的執行個體:Windows Script Host Shell 物件與 Windows Shell 物件。以下兩行程式碼就是處理這項工作:

Set objWSHShell = CreateObject("Wscript.Shell")
Set objShell = CreateObject("Shell.Application")

接下來,我們分別使用 Windows Shell 物件方法和屬性 (NamespaceSelf) 來確定 [我的網路芳鄰] 資料夾的位置。實際上,Namespace 方法會為我們找到資料夾,但傳回的是 Folder 物件。基於技術上的原因,倒不用擔心這點,這個物件對我們沒什麼用;因此我們使用 Self 屬性來傳回代表 [我的網路芳鄰] 資料夾的 FolderItem 物件。這麼做是因為 FolderItem 物件才是我們的指令碼能夠處理的物件。

收到 FolderItem 後,我們就可以抓取 Path 屬性,然後指定到 strNetHood 變數;strNetHood 現在等於是 C:\Documents and Settings\kenmyer\NetHood。沒錯,僅僅三行程式碼,解釋竟這麼冗長迂迴:

Set objFolder = objShell.Namespace(NETHOOD)
Set objFolderItem = objFolder.Self
strNetHood = objFolderItem.Path

接著我們只需要將捷徑名稱和網路位置的路徑指定道一對變數,這甚至不必親自下手,只要在指令碼中硬式編碼這些值即可。不過指定變數的值可方便您修改指令碼來滿足您的需求。

現在我們要使用 WSH Shell 物件,實際建立捷徑。開始會先呼叫 CreateShortcut 方法,向其傳遞新捷徑名稱的路徑。其中結合了四個項目:[我的網路芳鄰] 資料夾的路徑 (strNetHood)、行尾反斜線 (\)、新捷徑的名稱 (strShortcutName) 以及副檔名 .lnk,得到的捷徑路徑如下:

C:\Documents and Settings\kenmyer\NetHood\Finance Department Public Folder.lnk

我們將捷徑的 TargetPath 屬性設定為網路位置 (\\atl-finance-01\public),然後呼叫 Save 方法以寫入新捷徑到檔案系統中。就這樣,新的網路位置油然而生。

不好意思,現在我們要去休息一下。誰想得到指令碼竟然會這麼累人?


如需詳細資訊

查看嗨,Scripting Guy!- 過往文件

 

回到頁首 回到頁首