【教学课件】第22章WSH(WindowScriptHost)基本介绍.ppt
29页按一下以編輯母片標題樣式,按一下以編輯母片,第二層,第三層,第四層,第五層,*,*,JavaScript,程式設計與應用:用於單機的,WSH,環境,按一下以編輯母片標題樣式,按一下以編輯母片,第二層,第三層,第四層,第五層,*,*,第,22,章,WSH(Window Script Host),基本介紹,張智星,http:/mirlab.org/jang,台大資工系,MIR,實驗室,本章大綱,大綱,本章介紹,WSH,的背景及特色,以及入門範例,讓讀者對於,WSH,有基本的認識主題,22-1,:背景及特色,22-2,:簡易範例,22-3,:呼叫其它應用程式,22-4,:取用命令列參數,22-5,:執行選項,2,/28,22-1,:背景及特色,本小節說明,WSH,的發展背景及相關特色3,/28,背景,在,Windows 98,之前,微軟的作業系統只有提供,DOS,的批次檔案進行重複的工作,例如設定執行命令的搜尋路徑、複製大量檔案等等隨,Web,的風行,微軟發表了,WSH,,是可以在作業系統進行直接執行的程式語言由於,JavaScript,和,VBScript,的完備性,使得,WSH,馬上成為在微軟作業系統上的標準底稿語言。
對於不需要介面且重複性高的管理工作,可以直接從,DOS,命令列呼叫,WSH,的程式碼,也可以在檔案總管直接點選來執行WSH,是跟著,Windows NT 4 Option Pack,一起發行,同時也是,Windows 98,的一部份4,/28,WSH,的應用,WSH,最適合重複性高、不需要介面的工作備份或拷貝大量檔案建立大量帳號與密碼讀取環境變數或取得作業系統的相關資訊建立桌面的捷徑設定網路印表機設定網路相關資訊更改,Registry,的資訊抓取網頁的資訊與資料庫進行資料的存取進行大量資料的開啟與列印5,/28,WSH,的安裝,(1/2),我們須將它以,Windows,的附加元件型式來安裝在安裝,Windows,系列時,會一併安裝,WSH,如果你不確定你的作業系統是否已經安裝,WSH,,可以在,DOS,視窗下輸入,cscript,,如果得到如下列的回應(請見次頁),就表示你的作業系統已經安裝了,WSH,,而且版本是,5.8,6,/28,WSH的安裝(2/2),7,/28,如果DOS 視窗無法執行 cscript,就表示此作業系統沒有安裝 WSH你可以至 輸入wsh download來進行搜尋,就可找到 WSH 的下載網址。
22-2,:簡易範例,本小節將用簡單的範例來說明,WSH,8,/28,範例,22-1,主題:使用,JScript,來印出,Hello world!,執行,hello01.js,檢視原始碼,程式碼,說明,通常以,JScript,撰寫的,WSH,檔案,附檔名通常是,js,,作業系統也會將以,JScript,為主的,WSH,底稿引擎關聯到此種類型的檔案在,WSH,要印出訊息所用的函數是,WScript.Echo,,這和用戶端以及伺服器端的,JavaScript,所用的列印函數都不同/,如何印出,Hello World!,WScript.Echo(Hello world!);,9,/28,JavaScript,列印函數的比較,在用戶端的網頁(,Client-side script in HTML,):,document.write(),在伺服器端的,ASP,(,Server-side script in ASP,):,Response.Write(),在單機上的,WSH,(,Standalone script in WSH,):,WScript.Echo(),10,/28,執行方式,你可以使用任意文字編輯器產生此檔案後,然後再用下列三種不同的方式來執行:,在,DOS,視窗下輸入,cscript hello01.js,,就可以在,DOS,視窗印出,Hello world!,。
在,DOS,視窗下輸入,wscript hello01.js,,就會開啟一個灰色小視窗,印出,Hello world!,直接在檔案總管點選,hello01.js,,並產生與第二個方法相同的灰色小視窗11,/28,範例,22-2,主題:使用,VBScript,來印出,Hello world!,執行,hello01.vbs,檢視原始碼,程式碼,說明,你也可以使用三種不同的方法來執行,所得到的結果和,hello01.js,將會一樣以,VBScript,撰寫的,WSH,檔案,附檔名通常是,vbs,,作業系統也會將以,VBScript,為主的,WSH,底稿引擎關聯到此種類型的檔案如何印出,Hello World!,WScript.Echo(Hello world!),12,/28,範例,22-3,主題:以,wsf,為附檔名撰寫,WSH,檔案,執行,hello01.wsf,檢視原始碼,程式碼,說明,同樣可以使用前述的三種方法來執行此檔案使用,wsf,附檔名的,WSH,檔案內容是以,XML,呈現使用,wsf,的好處:,可以同時使用,JScript,和,VBScript,的程式碼/,使用,wsf,檔案來印出,Hello World!,WScript.Echo(Hello World!);,13,/28,範例,22-4,主題:同時使用,JScript,和,VBScript,於一個,wsf,檔案,執行,hello02.wsf,檢視原始碼,程式碼,說明,在一個,wsf,檔案中可以包含兩種不同的,script,。
WScript.Echo(,Hello world,via JScript!);,WScript.Echo(,Hello world,via VBScript!),14,/28,22-3,:呼叫其它應用程式,本小節將以一些範例來示範如何以,wsh,呼叫其他應用程式15,/28,呼叫其他應用程式的方法,以,JScript,撰寫,WSH,時,下面兩列程式碼都可以產生,shell,物件shell=WScript.CreateObject(WScript.Shell);,shell=new ActiveXObject(WScript.Shell);,16,/28,範例,22-5(,僅適用於,Win XP),主題:呼叫錄音機在背景播放一個聲音檔案,執行,audioPlay01.js,檢視原始碼,程式碼,說明,欲執行其他應用程式,可先產生一個,WSH,的,shell,物件,然後再使用,run(),函數來呼叫其他應用程式shell.Run(command,0),的第二個參數,,0,代表不開啟所呼叫應用程式的視窗1,則表示開啟所呼叫應用程式的視窗當然也可以呼叫媒體播放器來播放,但因為媒體播放器太肥太慢了!所以使用錄音機來播放聲音檔案就可以了。
此範例僅適用於,Win XP,,其他平台可改用下列範例audioFile=Windows XP,啟動,.wav;shell=new ActiveXObject(Wscript.Shell);command=sndrec32/play/close +audioFile;shell.Run(command,0);,17,/28,範例,22-5(2),主題:呼叫小畫家並開啟一圖檔,執行,imageDisplay01.js,檢視原始碼,程式碼,說明,欲執行其他應用程式,可先產生一個,WSH,的,shell,物件,然後再使用,run(),函數來呼叫其他應用程式shell.Run(command,0),的第二個參數,,0,代表不開啟所呼叫應用程式的視窗1,則表示開啟所呼叫應用程式的視窗/,使用小畫家顯示影像檔案,imageFile=annie.jpg;,shell=new ActiveXObject(Wscript.Shell);,command=mspaint +imageFile;,shell.Run(command,1);,18,/28,範例,22-6,主題:,使用,WSH,開啟記事本並載入文件,執行,run01.js,檢視原始碼,程式碼重點,說明,所開啟的應用程式會保持開啟狀態,,WSH,會持續執行其後的程式碼。
若要等待應用程式被關閉後,才繼續執行其後的,WSH,程式碼,可以在,run(),之後再加上第三個參數shell=WScript.CreateObject(,“,WScript.Shell,”,);shell.Run(,“,cmd/K dir,”,);shell.Run(,“,wordpad.exe run01.js,”,);,19,/28,範例,22-8,主題:,打開小算盤,並顯示相關的資訊,執行,exec01.js,檢視原始碼,程式碼,說明,while(oExec.Status=0)WScript.Sleep(100);,這行程式碼,若程式未開啟,將會持續等待,直至開啟完畢最後三行,會讓程式印出相關訊息WshShell=new ActiveXObject(,“,WScript.Shell,”,);oExec=WshShell.Exec(,“,calc.exe,”,);while(oExec.Status=0)WScript.Sleep(100);WScript.Echo(Status=+oExec.Status);WScript.Echo(ProcessID=+oExec.ProcessID);WScript.Echo(ExitCode=+oExec.ExitCode);,20,/28,22-4,:取用命令列參數,本小節將介紹如何抓取命令列參數,讓,WSH,更具彈性。
21,/28,範例,22-9,主題:如何一一印出命令列的參數,執行,cmdArgument01.js,檢視原始碼,程式碼重點,說明,在,DOS,命令視窗輸入:,cscript cmdArgument01.js Monday Tuesday Wednesday“,可得到,No.of arguments=3 args(0)=Monday args(1)=Tuesday args(2)=Wednesday,的結果,args.Count(),和,args.length,都是代表輸入參數的個數WScript.Echo(No.of arguments=“+WScript.Arguments.Count();,for(i=0;iargs.length;i+),WScript.Echo(args(+i+)=+args(i);,22,/28,範例,22-10,主題:如何逐次播放音效檔案,執行,audioPlay02.js,檢視原始碼,程式碼,說明,可以在,DOS,視窗輸入如下:,cscript audioPlay02.js chimes.wav notify.wav ding.wav,極可聽到三個音效連續播放的聲音。
上述三個音效檔案,都已經放在範例目錄之下若要尋找更多的音效檔案,可以到,c:windowsmedia,目錄尋找此範例僅適用於,Win XP,args=WScript.Arguments;,shell=new ActiveXObject(Wscript.Shell);,for(i=0;iargs.length;i+)command=sndrec32/play/close“+args(i);shell.Run(command,0,true);,23,/28,22-5,:執行選項,本小節將介紹如何以選項來指定執行的方式24,/28,列出執行選項,(1),由,DOS,視窗輸入,cscript/?,列出執行選項說明,25,/28,列出執行選項,(2),若在,DOS,視窗輸入,”wscript/?”,,也會得到類似的選項說明,26,/28,不顯示微軟的,Logo,當直接在,DOS,視窗輸入,cscript hello01.js,時,如果不想顯示,Microsoft(。





