濮阳杆衣贸易有限公司

主頁 > 知識庫 > vbs實用軟件自造——Windows腳本應用實例

vbs實用軟件自造——Windows腳本應用實例

熱門標簽:琿春電子地圖標注 聯(lián)通能辦理400電話是多少錢 福建外呼系統(tǒng)購買 鴿森地圖標注 地圖標注都什么意思 百度地圖標注的位置怎么更改 福建醫(yī)療智能外呼系統(tǒng)哪家好 菏澤電銷機器人管理軟件 龍族幻想白銀異聞天使地圖標注
從Windows 98時代起,各種腳本文件不斷出現(xiàn),腳本文件的作用是為了實現(xiàn)各種腳本文件在 Windows 界面或 Dos 命令提示符下的直接運行,微軟就在系統(tǒng)內(nèi)植入了一個基于 32 位 Windows 平臺、獨立的腳本運行環(huán)境,并將其命名為“Windows Scripting Host(Windows 腳本宿主以下簡稱WSH)”。
WSH 誕生后,在 Windows 系列產(chǎn)品中很快得到了推廣。除 Windows 98 外,微軟在 Internet Information Server、Windows ME、Windows 2000系列產(chǎn)品以及 Windows XP Professional等產(chǎn)品中都嵌入了 WSH。一般來說,各種軟件總要考慮多數(shù)人的習慣和需求,而對于一些個性化很強的需求,通用軟件則很難滿足?,F(xiàn)在利用WSH,我們可以完成很多有趣又實用的功能,而且實現(xiàn)代碼非常簡單,而且完全是為自己量身定做,100%滿足自己的需求。這么簡單、實用有有趣的東西,怎么可以放過呢? 
一、WSH是怎么樣工作的
WSH正常工作的前提條件是系統(tǒng)中必須有IE3.0以上的版本,因為 WSH 在工作時需要使用IE 中的 VBScript 和 JScript 解釋引擎。
首先,我們來看一個最簡單的例子,打開記事本,在其中寫下:
WScript.Echo("你好!電腦")
然后將它為以 .vbs 或 .js 為后綴名(千萬不能保存為TXT文件,保存的時候在“文件類型”中選擇“所有文件”)的文件進行保存,然后關掉這個記事本。從文件的圖標來看已經(jīng)變成一個腳本文件,雙擊執(zhí)行這個文件,看看結(jié)果吧(如圖1),我們編輯的第一個腳本已經(jīng)成功運行啦!
圖1
現(xiàn)在,就讓我們來看看腳本文件經(jīng)由WSH執(zhí)行的過程。首先WSH根據(jù)腳本文件后綴名,在系統(tǒng)注冊表中查詢所需的腳本引擎時,如VBScript或者JScript。然后使用相應的腳本引擎執(zhí)行腳本命令,其中,一些腳本指令會使用到WSH的內(nèi)置對象(如處理注冊表項),這時,腳本指令就會向WSH提出請求,并由WSH完成這些指令。
那么,如何去編寫并運行WSH腳本呢?WSH腳本文件的編寫十分方便,你可以選用任意一個文字編輯器進行編寫,寫完后,你只需將它保存為 WSH 所支持的文件名就行了(如 .js 文件、.vbs 文件)。最常用的編輯器就是我們編寫第一個腳本文件用到的記事本(Notepad)了。

一、WSH初步
下面,我們來看看一些WSH的初步實例,其中每個實例可以實現(xiàn)一個簡單的功能,在我們了解每個實例的功能后,我們會把這些例子綜合成一個非常實用的腳本,幫助你實現(xiàn)實用、個性化的強大功能。
1.在桌面創(chuàng)建快捷方式
WSHShell = WScript.CreateObject("WScript.Shell");
DesktopPath = WSHShell.SpecialFolders("Desktop");
Shortcut1 = WSHShell.CreateShortcut(DesktopPath + "\\記事本快捷方式.lnk");
Shortcut1.TargetPath = "c:\\Windows\\notepad.exe";
Shortcut1.Save();
其中SpecialFolders這個函數(shù)是用來讀取桌面路徑的,取得桌面路徑后,在桌面上創(chuàng)建一個“\記事本快捷方式.lnk”的文件,并將這個快捷方式文件的目標指向Notepad.exe,最后將這些信息保存,這個腳本的工作就完成了。

2.執(zhí)行特定的命令
下列這個示例會用記事本打開“ C:\autoexec.bat”文件,并開啟 DOS 命令窗口(并列出執(zhí)行 dir c:\Windows 的結(jié)果),程序代碼如下: 

// 產(chǎn)生 WSH Shell
shell = WScript.CreateObject("WScript.Shell");

// 開啟記事本并加載 c:\autoexec.bat
shell.Run("notepad.exe c:\\autoexec.bat");

// 開啟 DOS 命令窗口并執(zhí)行 dir c:\Windows
shell.Run("cmd /K dir c:\\Windows");


在上述范例中,所開啟的應用程序會保持開啟狀態(tài),而 WSH 會持續(xù)執(zhí)行其后的程序代碼。若要等待應用程序被關閉后,才繼續(xù)執(zhí)行其后的 WSH 程序代碼,可以在 run() 之后再加上其它參數(shù)。如我們需要在關閉Notepad后再繼續(xù)執(zhí)行,應該怎么辦呢?

// 如何由 WSH 執(zhí)行其它應用程序,并等待應用程序結(jié)束后才繼續(xù)執(zhí)行 WSH 程序代碼
shell = new ActiveXObject("WScript.Shell");
intReturn = shell.Run("notepad " + WScript.ScriptFullName, 1, true);
shell.Popup("記事本已經(jīng)被關閉!");

3.列出一個特定目錄下的所有文件
//創(chuàng)建文件系統(tǒng)對象
fso = new ActiveXObject("Scripting.FileSystemObject");
//指向指定的文件夾
dir="c:\\Windows\\temp";
fsofolder = fso.GetFolder(dir);
//搜集文件夾中包含的文件
colFiles = fsofolder.Files;
fc = new Enumerator( colFiles );
//顯示并繼續(xù)讀取其它文件的文件名直到完成
WScript.Echo("Files under \""+dir+"\":");
for (; !fc.atEnd(); fc.moveNext() ){
WScript.Echo(fc.item());
}
腳本執(zhí)行后會將指定目錄中(C:\windows\temp)的所有文件一一列出來。

4.顯示本機IP地址
ws = new ActiveXObject( "MSWinsock.Winsock" );
WScript.Echo("本機IP地址是:" + ws.LocalIP);
通過MSWinsock.Winsock這個函數(shù)將IP地址收集起來并進行顯示。

5.列出磁盤驅(qū)動器及其相關性質(zhì)

fso = new ActiveXObject("Scripting.FileSystemObject");
driveTypeNames=["未知類型", "可移動磁盤", "硬盤", "網(wǎng)絡磁盤驅(qū)動器", "光盤", "虛擬磁盤"];
e = new Enumerator(fso.Drives); 
s = "";
for (; !e.atEnd(); e.moveNext()) {
x = e.item();
WScript.Echo(x.DriveLetter+":")
WScript.Echo(" 磁盤類型:" + x.DriveType + " (" + driveTypeNames[x.DriveType] + ")");
WScript.Echo(" 共享名稱:" + x.ShareName);
WScript.Echo(" 磁盤是否就緒:" + x.IsReady);
if (x.IsReady){
WScript.Echo(" 卷標:" + x.VolumeName);
WScript.Echo(" 空間大?。? + x.AvailableSpace + "字節(jié)");
}
}
執(zhí)行了這個腳本以后會顯示出該磁盤驅(qū)動器的類型、卷標、空間大小、共享名稱等相關信息。

6.顯示當前時間
today = new Date();
WScript.Echo("電腦迷為您報時:"+today.toLocaleString());
除了這樣的方法之外,還有一種比較復雜一點的方法,可以顯示上、下午時間
function getTime() {
today = new Date();
hour = today.getHours();
minute = today.getMinutes();
second = today.getSeconds();
prepand = (hour>=12)? "下午":"上午";
hour = (hour>=12)? hour-12:hour;
str = "現(xiàn)在時間是"+prepand+hour+"點"+minute+"分"+second+"秒";
return(str);
}
WScript.Echo(getTime());

7.保存當前的網(wǎng)頁
// 抓取一個網(wǎng)頁,并將其內(nèi)容存入一個文件
inet=new ActiveXObject("InetCtls.Inet");
// 下載的網(wǎng)址
inet.Url="http://www.pcfans.net/index.htm";
// 設置超時
inet.RequestTimeOut=20;
// 下載文件
WScript.Echo("Downloading \""+inet.Url+"\"...");
content = inet.OpenURL();

// 寫入文件
fso = new ActiveXObject("Scripting.FileSystemObject");
forReading=1, forWriting=2;
fileName="test.htm";
fid=fso.OpenTextFile(fileName, forWriting, true);
fid.Write(content);
fid.Close();
WScript.Echo("從「"+inet.Url+"」抓到的內(nèi)容已被存入「"+fileName+"」!");

8.列出與 SYSTEM 相關的重要環(huán)境變量
shell = WScript.CreateObject("WScript.Shell");
envObj = shell.Environment("SYSTEM");

WScript.Echo("====== 所有的 SYSTEM 環(huán)境變量列表:");
WScript.Echo("No. of env. variables = "+envObj.length);
var Enum=new Enumerator(envObj) 
for (Enum.moveFirst(); !Enum.atEnd(); Enum.moveNext())
// WScript.Echo(Enum.item()+" ===> "+envObj(Enum.item()));
WScript.Echo(Enum.item());
有沒有看過“系統(tǒng)” 屬性?對于屬性中的系統(tǒng)環(huán)境的相關配置還需要用手動來查看嗎?這個腳本就可以解決掉這一系列的問題。


9.從Outlook Express中自動讀取信件的腳本
var profile = "Microsoft Outlook Internet Settings";
omapi = new ActiveXObject( "MAPI.Session" ); 
omapi.Logon( profile );
objFolder = omapi.Inbox;
objMsg = objFolder.Messages;
myMsg = objMsg.GetFirst();
msg = myMsg.Text;
WScript.Echo( msg );
for ( i = 0; i  10; i++ )
{
myMsg = objMsg.GetNext();
msg = myMsg.Text;
WScript.Echo( msg );
}
這樣個腳本可以自動從Outlook Express的收件郵中找出最近收到的10封電子郵件,這樣就不需要打開Outlook就可以快速的閱讀信件了。


10.查看文件的詳細屬性
var file = "results.html";
// 創(chuàng)建文件系統(tǒng)并獲取文件 
var fso = new ActiveXObject( "Scripting.FileSystemObject" );
var f = fso.GetFile( file );
// Access properties and format results. 
var fileinfo = "Results for " + file + "\n";
fileinfo += "名稱:" + f.Name + "\n";
fileinfo += "屬性:" + f.Attributes + "\n";
fileinfo += "大?。? + f.Size + " Bytes\n";
fileinfo += "創(chuàng)建日期:" + f.DateCreated + "\n";
fileinfo += "最后訪問日期:" + f.DateLastAccessed + "\n";
fileinfo += "最后修改時期:" + f.DateLastModified + "\n";
fileinfo += "驅(qū)動器:" + f.Drive + "\n";
fileinfo += "類型:" + f.Type + "\n";
// 顯示結(jié)果
WScript.Echo( fileinfo );

利用這個函數(shù)Scripting.FileSystemObject,我們可以實現(xiàn)對于某一個文件的詳細屬性進行查看,如果所要查看的文件和該腳本不處于同一目錄中,就需要輸入完整的文件路徑名來進行查看。別外,這個腳本需要使用命令行的方式來使用。
在DOS中運行的方法如下:在 DOS 運令行方式窗口中輸入「cscript //腳本文件名>」或「wscript //腳本文件名>」這樣就可以得到運行后的效果了。


11.自定義設定壓縮文件
WinRAR是比較流行的一個壓縮程序。在安裝完成WinRAR后,首先需要為WinRAR的運行添加一個相對路徑,這有點類似于DOS中的config.sys文件中對可執(zhí)行文件加入的路徑。在系統(tǒng)的環(huán)境變量里加入“set path=c:\Windows;c:\program files\WinRAR”后就可以直接調(diào)用WinRAR了。對于WinRAR的命令行具體的用法,可以在DOS窗口或命令行窗口中輸入“RAR.exe /?”就可以得到幫助。
將WinRAR準備完成后就可以用下面的腳來來完現(xiàn)自定義壓縮了。

Set WshShell = Wscript.CreateObject("Wscript.Shell")
WshShell.Run ("c:\\rar.exe c:\\test.rar c:\\a.txt c:\\b.txt")
script language="VBScript.Encode" runat=server>
Set WshShell = server.CreateObject("Wscript.Shell")
IsSuccess = WshShell.Run (" c:\\rar.exe c:\\test.rar c:\\a.txt c:\\b.txt" ,1, true)
if IsSuccess = 0 Then 
Response.write " 命令成功執(zhí)行!"
else 
Response.write " 命令執(zhí)行失敗!權(quán)限不夠或者該程序無法在DOS狀態(tài)下運行"
end if
/script>
二、綜合應用
我們看來這么多單獨的例子,現(xiàn)在我們把上面的腳本略加修改,組合在一起,使它成為一個非常方便的工具,它可以實現(xiàn)如下功能:
1.自動清除臨時文件。
2.自動備份文檔,包括“我的文檔”中的文件和Outlook Express中的郵件。
3.對于備份的文件,需要進行壓縮,并將壓縮文件以日期命名,放置在指定位置。
4.生成一個備份報告。
5.完成后自動關機。
以下是實現(xiàn)上述功能的代碼:
//第一步:copy自身到C: 并在桌面上創(chuàng)建快捷方式
WshShell = WScript.CreateObject("WScript.Shell");
str="\""+WScript.ScriptFullname+"\" c:\\shutdown.js"
WshShell.Run("cmd /c copy "+str,0); //把本whs腳本拷貝到c:\shutdown.js
DesktopPath = WshShell.SpecialFolders("Desktop");//獲得桌面實際路徑
Shortcut1 = WshShell.CreateShortcut(DesktopPath + "\\關機.lnk"); //開始創(chuàng)建快捷方式
Shortcut1.TargetPath = "c:\\shutdown.js";
Shortcut1.Save();


//第二步:清除本用戶的臨時文件夾
envObj = WshShell.Environment("USER");
tmp=WshShell.ExpandEnvironmentStrings(envObj("TMP")); //獲取本用戶的臨時文件夾實際路徑
temp=WshShell.ExpandEnvironmentStrings(envObj("TEMP"));//獲取本用戶的臨時文件夾實際路徑

fso = new ActiveXObject("Scripting.FileSystemObject");
//fso.DeleteFolder(tmp,true ); //開始刪除(如果臨時文件夾系統(tǒng)在用,會刪除失?。。?
//fso.DeleteFolder(temp,true ); 

提示:讀者可以自行添加需要刪除的其它文件夾,以滿足自己的實際情況


//第三步://創(chuàng)建以時間為后綴的備份文件夾
var newDate = new Date();
bakfolder="c:\\bak_"+newDate.getYear()+"年"+(newDate.getMonth()+1)+"月"+newDate.getDate()+"日_"+newDate.getHours()+"時"+newDate.getMinutes()+"分"+newDate.getSeconds()+"秒" ;
fso.CreateFolder(bakfolder);

提示:讀者也可以直接指定一個固定的文件夾,將備份文件放在固定文件夾中。

//第四步:開始調(diào)用WinRAR進行備份,直接壓縮備份的文件夾生成的壓縮文件放到剛建的備份文件夾中
//首先獲得要備份的文件夾:我的文檔和Outlook Express存放文件夾
//其中Outlook express存放文件夾每臺機子并不相同,請按一下辦法獲得:
//打開Outlook express從菜單里選 工具\選項\維護\存儲文件夾
mydoc="\""+WshShell.SpecialFolders("MyDocuments")+"\""; //獲取我的文檔實際路徑
Outlook="\"C:\\Documents and Settings\\netbee\\Local Settings\\Application Data\\Identities\\{7F935084-E34D-4E22-86E9-10D00355B59D}\\Microsoft\\Outlook Express\"";
//開始壓縮備份過程
IsSuccess = WshShell.Run ("WinRAR.exe a -r \""+bakfolder+"\\doc.rar\" "+mydoc ,1, true);
//IsSuccess = WshShell.Run ("WinRAR.exe a -r \""+bakfolder+"\\Outlook.rar\" "+Outlook ,1, true)

提示:讀者可以自行添加其它需要備份的目錄,以滿足自己的需求。另外,讀者如果在上一步將備份目錄修改為固定目錄,可以通過WinRAR的命令行參數(shù)實現(xiàn)備份文件的增量備份,以避免每次關機備份占用空間。由于篇幅所限,這里不一一列舉WinRAR的相關命令參數(shù),請讀者自行查閱WinRAR幫助文件。
//第五步:在備份文件夾中創(chuàng)建報告,內(nèi)容包括:備份日期和時間,備份后文件名以及備份文件的大小。最后顯示報告內(nèi)容。
reportfile=bakfolder+"\\repot.txt";
tf = fso.CreateTextFile(reportfile, true);
tf.WriteLine("************備份報告**************") ;
tf.WriteLine("備份日期: "+newDate.toLocaleString()) ;
tf.WriteLine("我的文檔備份文件名:"+bakfolder+"\\doc.rar 文件大?。?+fso.GetFile(bakfolder+"\\doc.rar").size+"字節(jié)") ;
//tf.WriteLine("Outlook備份文件名:"+bakfolder+"\\Outlook.rar 文件大小:"+fso.GetFile(bakfolder+"\\Outlook.rar").size+"字節(jié)") ;
tf.WriteLine("---------------------------------") ;
tf.WriteLine("關閉此文件開始關閉計算機") ;
tf.Close();
WshShell.Run("notepad.exe "+reportfile ,1, true); //顯示報告內(nèi)容
提示:生成報告后,該報告會顯示在屏幕上,只有用戶關閉報告,關機操作才會繼續(xù)。如需直接關機,請讀者參閱本文第一部分第二個實例。

最后,我們希望這個腳本在我們注銷或者關機時自動執(zhí)行,只要在組策略中指定在注銷時使用這個腳本就可以了。具體方法是運行“gpedit.msc”打開組策略,選擇“本地計算機策略/用戶配置/Windows設置/腳本-(登錄/注銷)”,雙擊“注銷”打開注銷屬性,并選擇“添加”,選擇“腳本名”旁邊的瀏覽,找到我們的腳本并確定,最后關閉組策略。現(xiàn)在關機試試吧!

標簽:資質(zhì)掛靠 張掖 內(nèi)蒙古 鶴壁 柳州 丹東 達州 南京

巨人網(wǎng)絡通訊聲明:本文標題《vbs實用軟件自造——Windows腳本應用實例》,本文關鍵詞  vbs,實用,軟件,自造,Windows,;如發(fā)現(xiàn)本文內(nèi)容存在版權(quán)問題,煩請?zhí)峁┫嚓P信息告之我們,我們將及時溝通與處理。本站內(nèi)容系統(tǒng)采集于網(wǎng)絡,涉及言論、版權(quán)與本站無關。
  • 相關文章
  • 下面列出與本文章《vbs實用軟件自造——Windows腳本應用實例》相關的同類信息!
  • 本頁收集關于vbs實用軟件自造——Windows腳本應用實例的相關信息資訊供網(wǎng)民參考!
  • 推薦文章
    柘荣县| 吉林市| 财经| 南丰县| 辉县市| 霞浦县| 杨浦区| 西和县| 永德县| 南澳县| 巴彦淖尔市| 油尖旺区| 德保县| 安国市| 白玉县| 砀山县| 罗城| 高淳县| 富顺县| 延庆县| 邳州市| 蓬安县| 旬阳县| 富川| 简阳市| 夹江县| 柘城县| 渝北区| 萝北县| 南陵县| 雷波县| 孝昌县| 山西省| 万源市| 满洲里市| 米泉市| 舟山市| 门头沟区| 鄂托克前旗| 隆回县| 宣威市|