熱點推薦:
您现在的位置: 電腦知識網 >> 操作系統 >> Windows系統管理 >> 正文

Windows下的“批處理”

2013-11-11 21:32:48  來源: Windows系統管理 

   如果你使用過UNIX上的Shell Script(命令解釋器腳本)那麼對Unix下的腳本編程一定深有感觸利用UNIX上的各種Shell Script例如CShellTCL/TKPerlUNIX管理員往往用一個腳本就可以完成你半天的編程才能完成的任務
   但在微軟的世界中一直沒有夠份量的類似東西出現充其量我們只能寫寫簡單的Batch File(就是DOS下的批處理命令)但它所提供的功能也太過於簡單無法處理復雜的事情不過以前在DOS下還有Basic可以解一點燃眉之急誰知道到了Windows 以後連Basic都不復存在讓我們這些喜歡DIY的朋友們很不舒服其實在Windows方便的操作界面下掩蓋著更為強大的功能你聽說過WSH嗎?它的全稱是Windows Scripting Host中文名字可以叫它Windows平台指令主機就是它讓你通過威力強大的VBScript和JavaScript腳本來實現強大的功能再也不用羨慕UNIX平台下的各種Shell Script了……
   WSH的優點
   WSH可以在位Windows平台上提供簡單威力強大以及具有彈性的指令環境
   更有威力的指令系統
   在以前Windows操作系統支持的唯一類似於腳本語言的是MSDOS的批處理命令雖然MSDOS指令又快又小但和VBScript及JavaScript相比MSDOS受到許多限制今天架構於ActiveX之上的WSH允許使用者利用威力強大的指令語言如VBScript與JavaScript同時MSDOS指令WSH仍可以支持不過對於腳本語言來說它只是很小的一個方面了
   Windows腳本語言的執行環境
   以前的MSDOS類的命令只可以在DOS下或者DOS窗口下使用現在不一樣了Microsoft目前在 Windows平台上提供三種腳本語言的執行環境:
   WSH架構
   長久以來Windows操作系統都缺乏一個真正的Shell程序功能因此微軟就針對了這個問題提出了WSH的架構把解釋程序語言的部分以及提供功能服務像是顯示信息存取文件或是讀寫注冊表 (Registry) 等部分功能分開解釋的部分交給相應語言的解釋引擎(Scripting Engine)而提供功能服務的部分就稱為一個執行環境 (Scripting Host)WSH就是專為在Windows系統下執行這種服務程序的環境
   剛才所討論的解釋與服務分開的方式就是微軟的ActiveX Scripting架構就說明了WSH的架構以及執行環境與解釋引擎之間的關系在這個圖中我們假設要執行Tentimesvbs腳本它的具體步驟是:
   先執行WSH(Windows 帶有字符模式的cscriptexe和圖形界面的Wscriptexe)告訴它執行tentimesvbs腳本具體的命令行是:
   cscript tentimesvbs或者wscript tentimesvbs
   這是WSH會根據所要執行腳本的後綴名(VBS)到系統注冊表中查詢可以解釋這種程序的解釋引擎(Windows 附有VBScript和JavaScript兩種語言的解釋引擎你也可以自己安裝其它語言的解釋引擎比如Perl)
   找出解釋引擎之後WSH會將程序一行一行從腳本中讀出然後送到解釋引擎由解釋引擎解釋程序所要執行的動作
   如果所要執行的動作必須要使用到WSH所提供的服務例如存取文件或是注冊表的內容就向WSH提出要求由WSH負責處理
   通過這樣的方式不管你使用何種語言只要有該語言的解釋引擎就可以在WSH下執行該種語言編寫的程序並且可以使用WSH所提供的服務
   也許有的朋友要問:WSH是如何將這些服務提供給腳本語言呢?其實很簡單它其實相當於我們練習編程的那些函數(當然了微軟稱它們為對象屬性和方法)通過這些接口實現腳本和操作系統的對話好了閒話少說我們先來看看WSH到底有何神通……
   Windows /MeWindowns NT+IIS和Windows 都已經附帶有WSH(不用去找那些煩人的編程語言IDE^_^)如果你用的是Windows 或者你想將你的WSH更新到最新版本沒有問題到微軟的WSH站點下載一個就是當前的最新版本是不過你下載的時候可要看清楚語言版本中文的一定要選擇Chinese/Simplified下載不一致的語言版本回來可是不能安裝的同時你還要選擇適合自己操作系統的版本Windows 和其它操作系統是不同的另外如果你想好好看一下WSH的幫助文檔(WSH的幫助文檔可不是像Linux下都隨軟件帶有它是需要另外下載的)也可以到前邊所說的網址下載一個可執行文件安裝以後在\Program Files\Microsoft Windows Script\WSHdocs下找到一個WSHchm的幫助文件裡面有WSH的詳細說明這個東西你可千萬不能少了……
   WSH使用初探
   整個WSH中Script語言都是以對象(Object)為基礎在運作講到對象自然就會有所謂的方法(Method)和屬性(Property)所以要使用WSH的第一步就是建立一個對象然後利用該對象的各種方法和屬性WSH提供以下幾個對象:
   ScriptNetwork:用來與網絡溝通通過它你可以取得網絡的各種信息比如IP地址網上鄰居列表等等
   WScriptShell:與操作系統溝通你可以通過該對象在桌面建立快捷方式建立/刪除注冊表鍵值
   ExcelApplication:與Excel溝通不但可以在Excel中顯示WSH內容而且可以用WSH存取Excel和顯示圖表
   此外WSH還可以顯示一些窗口和捕捉鼠標的輸入等等這裡就不再枚舉下邊我們看看它具體是如何使用的:
   建立一個彈出窗口
   記得以前在所有的編程科目學習中老師都會讓我們編寫一個HelloWorld!的實例這裡我們先看看如何完成一個HelloWorld的彈出窗口打開記事本輸入以下代碼保存為PopUpjs然後執行一下看看效果是否和圖一樣
  
   function showit(){
   var Message = Hello World!;
   var timeout = ;
   var title = Hello World!;
   var buttons = ;
   var rslt;
  
   var WS = WScriptCreateObject(WScriptShell);
   rslt = WSPopup(Message timeout title buttons);
   if ( rslt == ) {
   WScriptQuit;
   }
   }
   showit();
   顯示網絡信息(見圖
   讓我們看看如何顯示使用者工作組使用者姓名和電腦名稱使用記事本建立networkvbs內容如下:
   Set WSHNetwork = WScriptCreateObject(WScriptNetwork)
   顯示WSHNetwork object的properties
   MsgBox 使用者工作組: & WSHNetworkUserDomain & Chr() & Chr() & 使用者姓名: & WSHNetworkUserName & Chr() & Chr() & 電腦名稱 : & WSHNetworkComputerName vbInformation + vbOKOnly WSHNetwork 內容
   桌面快捷方式的建立
   Shortcutvbs
   Set WSHShell = WScriptCreateObject(WScriptShell)
   使用SpecialFolders讀取桌面路徑
   DesktopPath = WSHShellSpecialFolders(Desktop)
   於桌面上建立快捷方式
   Set Shortcut = WSHShellCreateShortcut(DesktopPath & \記事本lnk)
   設定快捷方式的屬性並保存
   ShortcutTargetPath = WSHShellExpandEnvironmentStrings(%windir%\notepadexe)
   ShortcutWorkingDirectory = WSHShellExpandEnvironmentStrings(%windir%)
   ShortcutWindowStyle =
   ShortcutIconLocation = WSHShellExpandEnvironmentStrings(%windir%\notepadexe )
   ShortcutSave
   WSH與Excel溝通(見圖
   讓我們看看如何在Excel中顯示WSH內容使用記事本開啟excelvbs內容如下:
   Set objXL = WScriptCreateObject(ExcelApplication)
   objXLVisible = TRUE
   objXLWorkBooksAdd
   objXLColumns()ColumnWidth =
   objXLColumns()ColumnWidth =
   objXLColumns()ColumnWidth =
   objXLCells( )Value = 屬性名稱
   objXLCells( )Value =
   objXLCells( )Value = 描述
   objXLRange(A:C)Select
   objXLSelectionFontBold = True
   objXLSelectionInteriorColorIndex =
   objXLSelectionInteriorPattern = xlSolid
   objXLSelectionFontColorIndex =
   objXLColumns(B:B)Select
   objXLSelectionHorizontalAlignment = &hFFFFEFDD xlLeft
  
   Dim intIndex
   intIndex =
   顯示WScript properties
   Call Show(Name WScriptName 應用程序名稱)
   Call Show(Version WScriptVersion 應用程序版本)
   Call Show(FullName WScriptFullName 應用程序內容: 完整名稱)
   Call Show(Path WScriptPath 應用程序內容: 只有路徑)
   Call Show(Interactive WScriptInteractive 互動模式狀態)
   顯示命令行參數
  
   Dim colArgs
   Set colArgs = WScriptArguments
   Call Show(ArgumentsCount colArgsCount 指令列引數數目)
   For i = to colArgsCount
   objXLCells(intIndex )Value = Arguments( & i & )
   objXLCells(intIndex )Value = colArgs(i)
   intIndex = intIndex +
   objXLCells(intIndex )Select
   Next
  
   Sub Show(strName st
From:http://tw.wingwit.com/Article/os/xtgl/201311/8669.html
    Copyright © 2005-2013 電腦知識網 Computer Knowledge   All rights reserved.