嗨,Scripting Guy!有沒(méi)有什么方法可以讓我使用腳本向用戶(hù)顯示一個(gè)對話(huà)框,供用戶(hù)選擇文件使用?
-- BF
您好,BF。如果您使用的是 Windows 2000,我們不知道實(shí)現此操作的方法,至少操作系統中沒(méi)有內置這樣的方法。但如果您使用的是 Windows XP,情況就不同了。在 Windows XP 上,您可以使用“UserAccounts.CommonDialog”對象向用戶(hù)顯示一個(gè)標準的“文件打開(kāi)”對話(huà)框??梢杂妙?lèi)似以下代碼的腳本:
Set objDialog = CreateObject("UserAccounts.CommonDialog")objDialog.Filter = "All Files|*.*" objDialog.InitialDir = "C:\" intResult = objDialog.ShowOpenIf intResult = 0 Then Wscript.Quit Else Wscript.Echo objDialog.FileName End If 這是一個(gè)小腳本,所以讓我們逐行進(jìn)行解釋吧。我們首先創(chuàng )建一個(gè)對 UserAccounts.CommonDialog 對象的對象引用(名為“objDialog”)。接著(zhù),我們設置對話(huà)框的“篩選”屬性。我們要顯示所有文件,所以我們將篩選設置成這樣:
objDialog.Filter = "All Files|*.*"
假如我們只想顯示文本文件,那該怎么辦?在這種情況下,我們將使用以下篩選:
objDialog.Filter = "Text Files|*.txt"
您也許能夠看出它是如何運行的:我們?yōu)槲募?lèi)型提供說(shuō)明 (Text Files),然后插入一個(gè)豎線(xiàn)分隔符 (|),最后使用標準的通配符來(lái)指示所有 .txt 文件 (*.txt)。是不是想默認顯示 .txt 文件,然后為用戶(hù)提供查看所有文件的選項?那么可以使用以下代碼:
objDialog.Filter = "Text Files|*.txt|All Files|*.*"
試一試,您就明白我們的意思了。
然后,我們指定默認文件夾。默認情況下,我們希望對話(huà)框顯示位于驅動(dòng)器 C 的根文件夾中的文件,所以我們這樣設置“InitialDir”屬性:
objDialog.InitialDir = "C:\"
希望顯示 C:\Windows 文件夾中的文件嗎?那么可以使用以下代碼:
objDialog.InitialDir = "C:\Windows"
不必擔心:這是一個(gè)真正的“文件打開(kāi)”對話(huà)框,所以您可以隨意單擊,并且可以隨時(shí)停下來(lái)。您從 C:\Windows 開(kāi)始并不意味著(zhù)您只能打開(kāi)該文件夾中的文件。
最后,我們使用下面這行代碼顯示對話(huà)框:
intResult = objDialog.ShowOpen
現在,我們只需坐下來(lái),等待用戶(hù)選擇文件并單擊“確定”(或者等待用戶(hù)單擊“取消”)。如果用戶(hù)單擊“取消”,則變量 intResult 將被設置為 0。在我們的腳本中,我們檢查 intResult 的值,如果是 0,我們將只需要使用 Wscript.Quit 來(lái)終止此腳本。
但是如果用戶(hù)實(shí)際上選擇了文件并單擊了“確定”,那該怎么辦?在這種情況下,intResult 將被設置為 -1,“FileDialog”屬性將被設置為所選文件的路徑名。我們的腳本只回顯路徑名,這意味著(zhù)我們將得到類(lèi)似以下內容的輸出:
C:\WINDOWS\Prairie Wind.bmp
不用說(shuō),您并不局限于只回顯文件路徑。實(shí)際上,您可以使用 WMI、FileSystemObject 或一些其他技術(shù)來(lái)綁定該文件,然后對其執行刪除、復制、壓縮或檢索文件屬性等操作 — 您對文件能夠執行的操作差不多都可以對它執行。
但無(wú)論如何,您都需要使用腳本。
順便說(shuō)一句,使用此方法,您一次只能選擇一個(gè)文件,而不能按住“Ctrl”鍵選擇多個(gè)文件。有一種方法可以選擇多個(gè)文件,至少在 XP 計算機上可以,但是我們只能將此問(wèn)題留到以后的專(zhuān)欄中討論了。
聯(lián)系客服