基本信息,屬性 說明,方法 說明,詳解,Environment,SpecialFolders,CreateShortcut,ExpandEnvironmentStrings,Popup,RegDelete,RegRead,RegWrite,Run,
基本信息
WshShell 對象
ProgID WScript.Shell
檔案名稱 wshom.ocx
CLSID F935DC22-1CF0-11d0-ADB9-00C04FD58A0B
IID F935DC21-1CF0-11d0-ADB9-00C04FD58A0B
屬性 說明
CurrentDirectory 返回或改變當前目錄
Environment 返回 WshEnvironment 集合對象。
SpecialFolders 使用 WshSpecialFolders 對象提供對 Windows shell 資料夾的訪問,如桌面資料夾,
開始選單資料夾和個人文檔資料夾。
方法 說明
方法 | 說明 |
---|
AppActivate | 激活一個應用程式視窗。 |
CreateShortcut | 創建並返回 WshShortcut 對象。 |
Exec | 在子命令視窗中運行一個應用程式,提供訪問StdIn/StdOut/StdErr流。 |
| |
LogEvent | 添加一個事件到日誌檔案。 |
Popup | 顯示包含指定訊息的訊息視窗。 |
RegDelete | |
RegRead | 從註冊表中返回指定的鍵或值。 |
RegWrite | 在註冊表中設定指定的鍵或值。 |
Run | 創建新的進程,該進程用指定的視窗樣式執行指定的命令。 |
SendKeys | 傳送一個或多個按鍵到活動視窗。 |
詳解
Environment
Environment 屬性返回 WshEnvironment 對象。
語法
WshShell.Environment ( [strType]) = objWshEnvironment
注釋
若 strType 指定了
環境變數所處的位置,可能值為 "System"、"User"、"Volatile" 和 "Process"。若未提供 strType,則該方法在 Windows NT 中檢索系統環境變數或在 Windows 95 中檢索進程環境變數。
對於 Windows 95,strType 參數僅支持 "Process"。
下列變數是由 Windows 作業系統提供的。腳本也可獲取由其他應用程式設定的環境變數。
名稱 說明
NUMBER_OF_PROCESSORS 計算機上運行的處理器數目。
PROCESSOR_ARCHITECTURE 用戶
工作站使用的處理器類型。
PROCESSOR_IDENTIFIER 用戶工作站的處理器 ID。
PROCESSOR_LEVEL 用戶工作站的處理器級。
PROCESSOR_REVISION 用戶工作站的處理器版本。
OS 用戶工作站所用的作業系統。
COMSPEC 用於運行“命令提示”視窗的命令(通常為
cmd.exe)。
HOMEDRIVE 本地主
驅動器(通常為 C 驅動器)。
HOMEPATH 用戶的默認路徑(在 Windows NT 上通常為 usersdefault)。
PATH 路徑環境變數。
PATHEXT
執行檔的擴展名(通常為 .com、 .exe、.bat 或 .cmd)。
SYSTEMDRIVE 系統所在的本地驅動器(例如,c:)。
SYSTEMROOT 系統目錄(例如,c:winnt)。和 WINDIR 相同。
WINDIR 系統目錄(例如 c:winnt)。和 SYSTEMROOT 相同。
TEMP 存儲
臨時檔案的目錄(例如,c:temp)。用戶可更改。
TMP 存儲臨時檔案的目錄(例如,c:temp)。用戶可更改。
示例
'返回NUMBER_OF_PROCESSORS系統環境變數Dim WshShell, WshSysEnvSet WshShell = CreateObject("WScript.Shell")Set WshSysEnv = WshShell.Environment("SYSTEM")WScript.Echo WshSysEnv("NUMBER_OF_PROCESSORS")
WshEnvironment 對象
WshEnvironment 對象未直接給出,可用 WshShell.Environment 屬性來訪問。
下面描述與 WshEnvironment 對象關聯的屬性。
屬性 說明
Count 枚舉項的數目。
length 枚舉項的數目 (JScript)。
下面描述與 WshEnvironment 對象關聯的方法。
方法 說明
Remove 刪除指定的環境變數。
SpecialFolders
SpecialFolders 屬性提供 WshSpecialFolders 對象以便訪問 Windows 的 shell 資料夾,例如桌面資料夾、
開始選單資料夾和個人文檔資料夾。
語法
WshShell.SpecialFolders = objWshSpecialFolders
示例
'這段代碼展示如何訪問桌面資料夾Dim WshShellSet WshShell = CreateObject("WScript.Shell")MsgBox "Your desktop is " & WshShell.SpecialFolders("Desktop")
WshSpecialFolders 對象
該對象未直接給出。要得到 WshSpecialFolders 對象,請使用 WshShell.SpecialFolders 屬性。
下面描述與 WshSpecialFolders 對象關聯的屬性。
屬性 描述
Item 指定資料夾的完整路徑(默認)。
Count 枚舉項的數目。
length 枚舉項的數目 (JScript) 。
WshSpecialFolders.Item
Item 屬性返回由 strFolderName 指定的資料夾的完整路徑。它是默認屬性。
語法
WshShell.SpecialFolders.Item("strFolderName") = strFolderPath
WshShell.SpecialFolders("strFolderName") = strFolderPath
注釋
若請求的資料夾 (strFolderName) 不可用,則 WshShell.SpecialFolders("strFolderName") 返回 NULL。例如,Windows 95 沒有 AllUsersDesktop 資料夾,如果 strFolderName = AllUsersDesktop,則返回 NULL。
AllUsersDesktop
AllUsersStartMenu
AllUsersPrograms
AllUsersStartup
Desktop
Favorites
Fonts
MyDocuments
NetHood
PrintHood
Programs
Recent
SendTo
StartMenu
Startup
Templates
示例
Dim WshShell, StrMyDesktopSet WshShell = CreateObject("WScript.Shell") '創建對象是wshell對象,不要和wscript對象混了StrMyDesktop = WshShell.SpecialFolders("Desktop") '這段返回完整的Windows桌面資料夾路徑,這段可以不要For Each strFolder In WshShell.SpecialFolders '遍歷所有特殊資料夾,這裡的SpecialFolders是屬性 MsgBox strFolder '顯示所有特殊資料夾Next
CreateShortcut
CreateShortcut 方法創建 WshShortcut 對象並將其返回。如果捷徑標題以 .url 結尾,就會創建 WshURLShortcut 對象。
語法
WshShell.CreateShortcut(strPathname) = objShortcut
示例
'這段代碼創建一個指向當前執行腳本的捷徑Dim WshShell, oShellLink, oUrlLinkSet WshShell = CreateObject("WScript.Shell")Set oShellLink = WshShell.CreateShortcut("CurrentScript.lnk")oShellLink.TargetPath = Wscript.ScriptFullNameoShellLink.SaveSet oUrlLink = WshShell.CreateShortcut("MicrosoftWebSite.URL")oUrlLink.TargetPath = "http://..." '輸入網站 URLoUrlLink.Save
WshShortcut 對象
該對象未直接給出。要獲得 WshShortcut 對象,請使用 WshShell.CreateShortcut 方法。
下面說明和 WshShortcut 對象有關的屬性。
屬性 說明
Arguments 捷徑對象的參數。
Description 捷徑對象的說明。
IconLocation 捷徑對象的圖示位置。
TargetPath 捷徑對象的目標路徑。
WindowStyle 捷徑對象的視窗樣式。
WorkingDirectory 捷徑對象的工作目錄。
下面說明與 WshShortcut 對象有關的方法。
方法 說明
Save 將捷徑存儲到指定的檔案系統中。
WshShortcut.Arguments
Arguments 屬性提供捷徑對象的參數。
語法
WshShortcut.Arguments = strArguments
WshShortcut.Description
Description 屬性提供捷徑對象的說明。
語法
WshShortcut.Description = strDescription
WshShortcut.Hotkey
HotKey 屬性提供捷徑對象的
熱鍵。熱鍵是啟動或切換程式的鍵盤捷徑。
語法
WshShortcut.HotKey = strHotKey
注釋
strHotKey 的BNF語法如下:
Hotkey ::= modifier* keyname
modifier ::= "ALT+" | "CTRL+" | "SHIFT+" | "EXT+"
keyname ::= "A" .. "Z" |
"0".. "9" |
"Back" | "Tab" | "Clear" | "Return" |
"Escape" | "Space" | "Prior" | ...
所有鍵的名稱都可以在 WINUSER.H 中找到。
熱鍵不區分大小寫。
熱鍵只能激活位於 Windows 桌面或 Windows“開始”選單的捷徑。
Windows
資源管理器不接受 ESC、ENTER、TAB、SPACE、PRINT SCREEN 或 BACKSPACE,即使 WshShortcut.Hotkey 遵循 Win32 API 支持它們。因此,建議在捷徑中不要用這些鍵。
示例
Dim WshShell, strDesktop, oMyShortcutSet WshShell = CreateObject("WScript.Shell")strDesktop = WshShell.SpecialFolders("Desktop")Set oMyShortcut = WshShell.CreateShortcut(strDesktop & "\a_key.lnk")OMyShortcut.TargetPath = "%windir%\notepad.exe"oMyShortCut.Hotkey = "ALT+CTRL+F"oMyShortCut.Save
WshShortcut.IconLocation
IconLocation 屬性提供捷徑對象的圖示位置。圖示位置的格式應為 "Path,index"。
語法
WshShortcut.IconLocation = strIconLocation
WshShortcut.TargetPath
TargetPath 屬性提供捷徑對象的目標路徑。
語法
WshShortcut.TargetPath = strTargetPath
WshShortcut.WindowStyle
WindowStyle 屬性提供捷徑對象的視窗樣式。
語法
WshShortcut.WindowStyle = natWindowStyle
WshShortcut.WorkingDirectory
WorkingDirectory 為一個捷徑對象提供工作目錄。
語法
WshShortcut.WorkingDirectory = strWorkingDirectory
WshShortcut.Save
Save 方法把捷徑對象保存到由 FullName 屬性指定的位置。
語法
WshShortcut.Save
WshUrlShortcut 對象
該對象未直接給出。要獲取 WshUrlShortcut 對象,可使用 WshShell.CreateShortcut 方法。
下表說明了和 WshUrlShortcut 對象有關的屬性。
屬性 說明
FullName URL 捷徑對象的完整路徑。
TargetPath URL 捷徑對象的目標路徑。
下表說明了和 WshUrlShortcut 對象有關的方法。
方法 說明
Save 將捷徑保存到指定的檔案系統中。
WshUrlShortcut.FullName
FullName 屬性提供捷徑對象的完整路徑。
語法
WshUrlShortcut.FullName = strFullName
WshUrlShortcut.TargetPath
TargetPath 屬性提供捷徑對象的目標路徑。
語法
WshUrlShortcut.TargetPath = strTargetPath
WshUrlShortcut.Save
Save 方法保存一個捷徑,該捷徑指向 FullName 屬性指定的位置。
語法
WshUrlShortcut.Save
ExpandEnvironmentStrings
語法
WshShell.ExpandEnvironmentStrings(strString) = strExpandedString
示例
Dim WshShellSet WshShell = CreateObject("WScript.Shell")MsgBox "Prompt is " & WshShell.ExpandEnvironmentStrings("%PROMPT%")
Popup
Popup 方法顯示一個彈出式
訊息框視窗,訊息框中包含的訊息由 strText 指定。該訊息框的視窗標題由 strTitle 指定。若 strTitle 省略,則視窗標題為 Windows Scripting Host。
語法
WshShell.Popup(strText, [natSecondsToWait], [strTitle], [natType]) = intButton
注釋
若提供 natSecondsToWait 且其值大於零,則訊息框在 natSecondsToWait 秒後關閉。
natType 的含義與其在 Win32? MessageBox 函式中相同。下表顯示 natType 中的值及含義。下表中的值可以組合。
按鈕類型
值 | 說明 |
---|
0 | 顯示“確定”按鈕 |
1 | 顯示“確定”和“取消”按鈕 |
2 | 顯示“終止”、“重試”和“忽略”按鈕 |
3 | 顯示“是”、“否”和“取消”按鈕 |
4 | 顯示“是”和“否”按鈕 |
5 | 顯示“重試”和“取消”按鈕 |
圖示類型
值 | 說明 |
---|
16 | 顯示停止標記圖示 |
32 | 顯示問號圖示 |
48 | 顯示感嘆號圖示 |
64 | 顯示信息標記圖示 |
以上兩個表並不涵蓋 natType 的所有值。完整的列表請參閱 Win32 文檔。
返回值 intButton 指示用戶所單擊的按扭編號。若用戶在 natSecondsToWait 秒之前不單擊按扭,則 intButton 設定為 -1 。
值 | 說明 |
---|
1 | “確定”按鈕 |
2 | “取消”按鈕 |
3 | “終止”按鈕 |
4 | “重試”按鈕 |
5 | “忽略”按鈕 |
6 | “是”按鈕 |
7 | “否”按鈕 |
示例
Dim WshShellSet WshShell = CreateObject("WScript.Shell")WshShell.Popup "Where do you want to go today?"
WScript.Echo
Echo 方法在視窗(Wscript.exe 中)或“
命令提示符”視窗(cscript.exe 中)顯示參數。
參數用空格分隔。在 cscript.exe 中,該方法在顯示最後一個參數之後輸出一對回車/換行(CR LF)。
語法
Wscript.Echo [anyArg...]
示例
WScript.EchoWScript.Echo 1,2,3WScript.Echo "Windows Scripting Host is cool."
RegDelete
RegDelete 從
註冊表中刪除名為 strName 的鍵或值。
語法
WshShell.RegDelete strName
參數
strName
如果 strName 以
反斜槓 () 結束,則該方法
刪除鍵而不是值。
strName 參數必須以下列之一的根鍵名開始:
短根鍵名 長根鍵名
HKCU HKEY_CURRENT_USER
HKLM HKEY_LOCAL_MACHINE
HKCR HKEY_CLASSES_ROOT
HKEY_USERS
HKEY_CURRENT_CONFIG
示例
Dim WshShellSet WshShell = CreateObject("WScript.Shell")WshShell.RegDelete "HKCU\ScriptEngine\Value" '刪除值"Value"WshShell.RegDelete "HKCU\ScriptEngine\Key" '刪除鍵"Key"
RegRead
RegRead 方法返回名為 strName 的
註冊表鍵或值。
語法
WshShell.RegRead(strName) = strValue
參數
strName
如果 strName 以反斜槓 () 結束,則該方法返回鍵,而不是值。
strName 參數必須以下列根鍵名開始。
Short Long
HKCU HKEY_CURRENT_USER
HKLM HKEY_LOCAL_MACHINE
HKCR HKEY_CLASSES_ROOT
HKEY_USERS
HKEY_CURRENT_CONFIG
注釋
RegRead 方法僅支持 REG_SZ、REG_EXPAND_SZ、REG_DWORD、REG_BINARY 和 REG_MULTI_SZ 數據類型。若
註冊表有其他數據類型,RegRead 返回 DISP_E_TYPEMISMATCH。
示例
Dim WshShellSet WshShell = CreateObject("WScript.Shell")WshShell.RegRead("HKCU\ScriptEngine\Val") 'Read from value "Val"WshShell.RegRead("HKCU\ScriptEngine\Key") 'Read from key "Key"
RegWrite
RegWrite 方法設定名為 strName 的
註冊表鍵或值。
語法
WshShell.RegWrite strName, anyValue, [strType]
參數
strName
若 strName 以一個反斜槓 () 結束,則該方法設定鍵,而不是值。
strName 參數必須以下列根鍵名開頭。
Short Long
HKCU HKEY_CURRENT_USER
HKLM HKEY_LOCAL_MACHINE
HKCR HKEY_CLASSES_ROOT
HKEY_USERS
HKEY_CURRENT_CONFIG
anyValue
當 strType 為 REG_SZ 或 REG_EXPAND_SZ 時,RegWrite 方法自動將 anyValue 轉換為字元串。若 strType 為 REG_DWORD,則 anyValue 被轉換為整數。若 strType 為 REG_BINARY,則 anyValue 必須是一個整數。
strType
RegWrite 方法支持 strType 為 REG_SZ、REG_EXPAND_SZ、REG_DWORD 和 REG_BINARY。若其他的數據類型被作為 strType 傳遞,RegWrite 返回 E_INVALIDARG。
示例
Dim WshShellSet WshShell = CreateObject("WScript.Shell")WshShell.RegWrite "HKCU\ScriptEngine\Value", "Some string value"WshShell.RegWrite "HKCU\ScriptEngine\Key", 1, "REG_DWORD"
Run
Run 方法創建一個新的進程,該進程以 intWindowStyle 視窗樣式執行 strCommand。
語法
WshShell.Run (strCommand, [intWindowStyle], [blnWaitOnReturn])
參數
strCommand
在 strCommand 參數內部的
環境變數被自動擴展。
intWindowStyle
這是為新進程在 STARTUPINFO 結構內設定的 wShowWindow 元素的值。其意義與 ShowWindow 中的 nCmdShow 參數相同,可取以下值之一。
名稱 | 值 | 含義 |
---|
SW_HIDE | 0 | 隱藏視窗並激活另一視窗。 |
SW_SHOWNORMAL | 1 | 激活並顯示一個視窗。若視窗是最小化或最大化,則恢復到其原來的大小和位置。 |
SW_SHOWMINIMIZED | 2 | 激活視窗並以最小化顯示該視窗。 |
SW_SHOWMAXIMIZED | 3 | 激活視窗並以最大化顯示該視窗。 |
SW_SHOWNOACTIVATE | 4 | 按視窗最近的大小和位置顯示。活動視窗保持活動。 |
SW_SHOW | 5 | 以當前大小和位置激活並顯示視窗。 |
SW_MINIMIZE | 6 | 最小化指定視窗並激活按 Z 序排序的下一個頂層視窗。 |
SW_SHOWMINNOACTIVE | 7 | |
SW_SHOWNA | 8 | 以當前狀態顯示視窗。活動視窗保持活動。 |
SW_RESTORE | 9 | 激活並顯示視窗。若視窗是最小化或最大化,則恢復到原來的大小和位置。在還原應用程式的最小化視窗時,應指定該標誌。 |
blnWaitOnReturn
如果未指定 blnWaitOnReturn 或其值為 FALSE,則該方法立即返回到腳本繼續執行而不等待進程結束。
若 blnWaitOnReturn 設為 TRUE,則 Run 方法返回由應用程式返回的任何錯誤代碼。如果未指定 blnWaitOnReturn 或其值為 FALSE,則 Run 返回錯誤代碼 0(zero)。
示例
'這段用記事本打開當前執行的腳本Dim WshShell, ErrNumberSet WshShell = CreateObject("WScript.Shell")WshShell.Run("notepad " & Wscript.ScriptFullName)WshShell.Run("%windir%\notepad.exe " & Wscript.ScriptFullName)'這段返回執行的應用程式的錯誤碼(退出碼)ErrNumber = WshShell.Run("notepad " & Wscript.ScriptFullName, 1, True)