my-script.vbs "c:\scripts"
在檔案夾路徑的兩端必須加雙引號嗎?本例中不需要。但是,如果路徑中有空格,則必須加雙引號。以下命令列將不起作用:
my-script.vbs c:\documents and settings\kmyer
只要是向指令碼傳遞包含空格的參數,就必須將整個參數括在雙引號內(否則無需如此)。換句話說:
my-script.vbs "c:\documents and settings\kmyer"
這就是命令解釋程式的工作方式。
那麼,我們將在這裡運行什麼指令碼呢?問得好。最終是這樣一個指令碼:
複製代碼 代碼如下:Set objShell = CreateObject("Wscript.Shell")
strPath = Wscript.Arguments(0)
strPath = "explorer.exe /e," & strPath
objShell.Run strPath
如同往常一樣,該指令碼沒有太多內容。我們首先建立 Wscript.Shell 對象的執行個體;它是 Windows Script Host 對象,我們用它來在另一指令碼內運行指令碼或可執行檔。然後我們擷取提供給指令碼的第一個參數 (c:\scripts) 並將其儲存到名為 strPath 的變數中:
strPath = Wscript.Arguments(0)
對這些應該沒有什麼疑問吧?稍後,我們將使用 Run 方法啟動 Windows 資源管理員。不過,在此之前,我們應注意到 WSH 中的 Run 方法同 Run 對話方塊基本上是一回事。如果想使用 Run 對話方塊啟動 Windows 資源管理員(焦點定位在 C:\Scripts 檔案夾上),需要鍵入以下代碼:
explorer.exe /e,c:\scripts
我們發現,以上使用的文法與我們用 Run 方法啟動 Windows 資源管理員所用的文法相同:我們只需要構建命令,然後執行:
strPath = "explorer.exe /e," & strPath
objShell.Run strPath
在第 1 行,我們採取命令 explorer.exe /e, 並附加上檔案夾路徑(該路徑儲存在變數 strPath 中);然後,strPath 的值將是 explorer.exe /e,c:\scripts。在第 2 行,我們調用 Run 方法,並將變數 strPath 作為所要啟動並執行命令傳遞。如果一切順利(就指令碼編寫方面,事情總是很順利,對吧?),Windows 資源管理員將會開啟且焦點定位在 C:\Scripts 上:
真酷。
那麼,這有何不妥嗎?沒什麼,一切正常。該指令碼的唯一弊端是需要您鍵入檔案夾的完整路徑;當您試圖開啟檔案夾 C:\Documents and Settings\Default User\Application Data\Microsoft\SystemCertificates\My\Certificates 時,這就會成為一個問題。但是由於系統管理員總是堅持使用命令列,我們又必須做何種選擇呢?
好吧,您總是可以嘗試一下 GUI 方法(不用擔心,我們不會告訴任何人的): 複製代碼 代碼如下:Const WINDOW_HANDLE = 0
Const NO_OPTIONS = 0
Set objShell = CreateObject("Shell.Application")
Set objFolder = objShell.BrowseForFolder _
(WINDOW_HANDLE, "Select a folder:", NO_OPTIONS)
Set objFolderItem = objFolder.Self
strPath = objFolderItem.Path
objShell.Explore strPath
本指令碼根本不需要您做任何鍵入。您只需啟動該指令碼,然後它會顯示瀏覽檔案夾對話方塊:
選擇檔案夾,單擊確定,這樣就可以了。
那麼,此指令碼是如何工作的?好吧,我們先定義一對常量:WINDOW_HANDLE 和 NO_OPTIONS。WINDOW_HANDLE 是 BrowseForFolder 方法所需的常量,NO_OPTIONS 則只是通知指令碼我們要顯示標準的“瀏覽檔案夾”對話方塊。之後,我們建立 Shell.Application 對象的執行個體,然後使用下面這行代碼來顯示該對話方塊:
Set objFolder = objShell.BrowseForFolder _
(WINDOW_HANDLE, "Select a folder:", NO_OPTIONS)
在對話方塊顯示之後,它將一直等到我們選擇一個檔案夾並單擊確定。然後我們使用如下兩行代碼來實現:1) 建立對選定檔案夾的對象引用;以及,2) 將檔案夾路徑儲存到變數 strPath 中:
Set objFolderItem = objFolder.Self
strPath = objFolderItem.Path
我們現在只需調用專用於開啟 Windows 資源管理員的 Explore 方法。通過將變數 strPath 作為單獨的參數傳遞,這樣會使得 Windows 資源總管在開啟時焦點定位在 C:\Scripts 上:
objShell.Explore strPath
這說明了什麼呢?這說明現在您可以使用命令提示字元開啟 Windows 資源管理員,也可以使用 GUI 開啟 Windows 資源管理員,這完全取決於您。