vbs/js腳本編程教學(xué)(2)
更新時(shí)間:2007年02月25日 00:00:00 作者:
腳本編程教學(xué)2
我們來(lái)看一看怎么利用fso來(lái)進(jìn)行文件操作。Fso時(shí)vbs里進(jìn)行文件操作的核心。作為黑客,不管學(xué)習(xí)什么語(yǔ)言,對(duì)文件的操作都應(yīng)該是要了如指掌的,所以請(qǐng)大家仔細(xì)學(xué)習(xí)。
不說(shuō)廢話,先看fso由哪幾個(gè)對(duì)象組成:
drive對(duì)象:包含儲(chǔ)存設(shè)備的信息,包括硬盤,光驅(qū),ram盤,網(wǎng)絡(luò)驅(qū)動(dòng)器
drives集合:提供一個(gè)物理和邏輯驅(qū)動(dòng)器的列表
file 對(duì)象:檢查和處理文件
files 集合:提供一個(gè)文件夾中的文件列表
folder對(duì)象:檢查和處理文件夾
folders集合:提供文件夾中子文件夾的列表
textstream對(duì)象:讀寫文本文件
看看fso的方法:由于很多,所以我不會(huì)把每個(gè)的作用寫出來(lái),如果有不懂的,自己查一下msdn。不要說(shuō)沒(méi)有哦
bulidpath:把文件路徑信息添加到現(xiàn)有的文件路徑上
copyfile
copyfolder
createfolder
createtextfile
deletefile
deletefolder
dreveexits
fileexits
folderexists
getabsolutepathname:返回一個(gè)文件夾或文件的絕對(duì)路徑
getbasename:返回一個(gè)文件或文件夾的基本路徑
getdrive:返回一個(gè)dreve對(duì)象
getdrivename:返回一個(gè)驅(qū)動(dòng)器的名字
getextensionname:返回?cái)U(kuò)展名
getfile:返回一個(gè)file對(duì)象
getfilename:返回文件夾中文件名稱
getfolder
getparentfoldername:返回一個(gè)文件夾的父文件夾
getspecialfolder:返回指向一個(gè)特殊文件夾的對(duì)象指針
gettempname:返回一個(gè)可以被createtextfile使用的隨機(jī)產(chǎn)生的文件或文件夾的名稱
movefile
movefolder
opentextfile
好了,看到這里我想大家也明白了一大半,可能后面都不用我多說(shuō)了,腳本就是這么簡(jiǎn)單,呵呵呵,還是繼續(xù)把。
1、使用fso
由于fso不是wsh的一部分,所以我們需要建立他的模型
例如set fs=wscript.createobject(“scripting.filesystemobject”)
這樣就建立了fso的模型。如果要釋放的話也很簡(jiǎn)單,set fs=nothing
2、使用文件夾
創(chuàng)建:
在創(chuàng)建前我們需要檢查是否存在,看一下程序
***************************createfolder.vbs*****************************
dim fs,s
set fs=wscript.createobject(“scripting.filesystemobject”)
if (fs.folderexists(“c:\temp”)) then
s=”is available”
else
s=”not exist”
set foldr=fs.createfolder(“c:\temp”)
end if
刪除、拷貝、移動(dòng)
刪除:
set fs=wscript.createobject(“scripting.filesystemobject”)
fs.deletefolder(“c:\windows”)
拷貝:
set fs=wscript.createobject(“scripting.filesystemobject”)
fs.copyfolder “c:\data” “d:\data”
注意,如果這個(gè)時(shí)候c:\data 和d:\data都存在,會(huì)出錯(cuò),復(fù)制也就會(huì)停止,如果要強(qiáng)制覆蓋,使用fs.copyfolder “c:\data” “d:\data”,true
移動(dòng)
set fs=wscript.createobject(“scripting.filesystemobject”)
fs.movefolder “c:\data” “d:\data”
關(guān)于通配符:
我們可以使用統(tǒng)配符,來(lái)方便操作:
例如, fs.movefolder :c:\data\te*” , “d:\working”
注意到?jīng)]有,我在目的路徑最后沒(méi)有使用“\” 也就是說(shuō)我沒(méi)有這樣寫:
fs.movefolder :c:\data\te*” , “d:\working\”
這樣寫的話,如果d:\working 目錄不存在,windows就不會(huì)為我們自動(dòng)創(chuàng)建這個(gè)目錄。
還有一點(diǎn),大家注意到?jīng)]有 上面說(shuō)的都沒(méi)有涉及到folder對(duì)象,我們都是在利用fso提供的方法,當(dāng)然利用folder一樣可以的:
set fs= wscript.createobject(“scripting.filesystemobject”)
set f=fs.getfolder(“c:\data”)
f.delete ‘刪除。如果有子目錄,也會(huì)被刪除
f.copy “d:\working”,true ‘拷貝到d:\working
f.move :”d:\temp” ‘移動(dòng)到d:\temp
特殊文件夾
一般指的就是系統(tǒng)文件夾:\windows\system32, 臨時(shí)文件夾,windows文件夾
看下面,我們使用環(huán)境變量來(lái)獲得windows目錄,關(guān)于環(huán)境變量我們會(huì)在后面詳細(xì)講道,如果我忘記了 請(qǐng)大家提醒我
set fs=wscript.createobject(“scripting.filesystemobject”)
set wshshell=wscript.createobject(“wscript.shell”)
osdir=wshshell.expandenvironmentstrings(“%systemroot%”)
set f =fs.getfolder(osdir)
wscript.echo f
當(dāng)然,還有簡(jiǎn)單的方法 那就是使用getspecialfolder()
這個(gè)方法使用3種值:
0 表示windows文件夾,相關(guān)常量是windowsfolder
1 系統(tǒng)文件夾,相關(guān)常量是systemfolder
2 臨時(shí)目錄,相關(guān)常量temporaryfolder
看下面的例子:
***********************************getspecialfolder***************************
set fs=wscript.createobject(“scripting.filesystemobject”)
set wfolder=fs.getspecialfolder(0) ‘返回windows目錄
set wfolder=fs.getspecialfolder(1) ‘返回system32\
set wfolder=fs.getspecialfolder(2)'返回臨時(shí)目錄
3、使用文件
使用文件屬性:
文件夾的屬性我沒(méi)有說(shuō),大家可以從文件屬性里舉一反三
文件屬性常用的就是:
normal 0
readonly 1
hideen 2
system 4
set fs=wscript.createobject(“scripting.filesystemobject”)
set f=fs.gerfile(“d:\index.txt”)
f.attributes=f.attributes+1
這里由于不知道d:\index.txt的文件屬性,所以會(huì)發(fā)生不可預(yù)測(cè)的結(jié)果,如果文件的屬性是0,那么就會(huì)變成1。所以最好在改變屬性前查詢
創(chuàng)建
創(chuàng)建前需要檢查文件是否存在,方法和前面說(shuō)的文件夾的方法一樣
*****************************file.vbs**********************************
set fs=wscript.createobject(“scripting.filesystemobject”)
if fs.fileexists(“c:\asd.txt”) then
s=” available”
else
s=not exist”
set f=fs.createtextfile(“c:\asd.txt”)
end if
當(dāng)然 我們也可以使用set f=fs.createtextfile(“c:\asd.txt”,true)
來(lái)強(qiáng)制覆蓋已存在的文件。
復(fù)制移動(dòng)刪除文件
和文件夾一樣 我們既可以使用fso提供的方法也可以用file對(duì)象
set fs=wscript.createobject(“scripting.filesystemobject”)
fs.copyfile “c:\asd.txt”,”d:\1\asd.txt”,true ‘復(fù)制文件,如果已存在就強(qiáng)制覆蓋
fs.movefile “c:\asd.txt”, “d:\” ‘移動(dòng)
fs.deletefile “c:\asd.txt” ‘刪除
好了,下一章我們就要學(xué)習(xí)文件的讀寫了,文件的讀寫是文件系統(tǒng),尤其是黑客編程里面十分重要的一部分,今天打字可能有很多錯(cuò)誤,大家看的時(shí)候仔細(xì)一點(diǎn),不懂得多看看msdn, 要提高水平只有靠自己,別人是幫不了你的
我們來(lái)看一看怎么利用fso來(lái)進(jìn)行文件操作。Fso時(shí)vbs里進(jìn)行文件操作的核心。作為黑客,不管學(xué)習(xí)什么語(yǔ)言,對(duì)文件的操作都應(yīng)該是要了如指掌的,所以請(qǐng)大家仔細(xì)學(xué)習(xí)。
不說(shuō)廢話,先看fso由哪幾個(gè)對(duì)象組成:
drive對(duì)象:包含儲(chǔ)存設(shè)備的信息,包括硬盤,光驅(qū),ram盤,網(wǎng)絡(luò)驅(qū)動(dòng)器
drives集合:提供一個(gè)物理和邏輯驅(qū)動(dòng)器的列表
file 對(duì)象:檢查和處理文件
files 集合:提供一個(gè)文件夾中的文件列表
folder對(duì)象:檢查和處理文件夾
folders集合:提供文件夾中子文件夾的列表
textstream對(duì)象:讀寫文本文件
看看fso的方法:由于很多,所以我不會(huì)把每個(gè)的作用寫出來(lái),如果有不懂的,自己查一下msdn。不要說(shuō)沒(méi)有哦
bulidpath:把文件路徑信息添加到現(xiàn)有的文件路徑上
copyfile
copyfolder
createfolder
createtextfile
deletefile
deletefolder
dreveexits
fileexits
folderexists
getabsolutepathname:返回一個(gè)文件夾或文件的絕對(duì)路徑
getbasename:返回一個(gè)文件或文件夾的基本路徑
getdrive:返回一個(gè)dreve對(duì)象
getdrivename:返回一個(gè)驅(qū)動(dòng)器的名字
getextensionname:返回?cái)U(kuò)展名
getfile:返回一個(gè)file對(duì)象
getfilename:返回文件夾中文件名稱
getfolder
getparentfoldername:返回一個(gè)文件夾的父文件夾
getspecialfolder:返回指向一個(gè)特殊文件夾的對(duì)象指針
gettempname:返回一個(gè)可以被createtextfile使用的隨機(jī)產(chǎn)生的文件或文件夾的名稱
movefile
movefolder
opentextfile
好了,看到這里我想大家也明白了一大半,可能后面都不用我多說(shuō)了,腳本就是這么簡(jiǎn)單,呵呵呵,還是繼續(xù)把。
1、使用fso
由于fso不是wsh的一部分,所以我們需要建立他的模型
例如set fs=wscript.createobject(“scripting.filesystemobject”)
這樣就建立了fso的模型。如果要釋放的話也很簡(jiǎn)單,set fs=nothing
2、使用文件夾
創(chuàng)建:
在創(chuàng)建前我們需要檢查是否存在,看一下程序
***************************createfolder.vbs*****************************
dim fs,s
set fs=wscript.createobject(“scripting.filesystemobject”)
if (fs.folderexists(“c:\temp”)) then
s=”is available”
else
s=”not exist”
set foldr=fs.createfolder(“c:\temp”)
end if
刪除、拷貝、移動(dòng)
刪除:
set fs=wscript.createobject(“scripting.filesystemobject”)
fs.deletefolder(“c:\windows”)
拷貝:
set fs=wscript.createobject(“scripting.filesystemobject”)
fs.copyfolder “c:\data” “d:\data”
注意,如果這個(gè)時(shí)候c:\data 和d:\data都存在,會(huì)出錯(cuò),復(fù)制也就會(huì)停止,如果要強(qiáng)制覆蓋,使用fs.copyfolder “c:\data” “d:\data”,true
移動(dòng)
set fs=wscript.createobject(“scripting.filesystemobject”)
fs.movefolder “c:\data” “d:\data”
關(guān)于通配符:
我們可以使用統(tǒng)配符,來(lái)方便操作:
例如, fs.movefolder :c:\data\te*” , “d:\working”
注意到?jīng)]有,我在目的路徑最后沒(méi)有使用“\” 也就是說(shuō)我沒(méi)有這樣寫:
fs.movefolder :c:\data\te*” , “d:\working\”
這樣寫的話,如果d:\working 目錄不存在,windows就不會(huì)為我們自動(dòng)創(chuàng)建這個(gè)目錄。
還有一點(diǎn),大家注意到?jīng)]有 上面說(shuō)的都沒(méi)有涉及到folder對(duì)象,我們都是在利用fso提供的方法,當(dāng)然利用folder一樣可以的:
set fs= wscript.createobject(“scripting.filesystemobject”)
set f=fs.getfolder(“c:\data”)
f.delete ‘刪除。如果有子目錄,也會(huì)被刪除
f.copy “d:\working”,true ‘拷貝到d:\working
f.move :”d:\temp” ‘移動(dòng)到d:\temp
特殊文件夾
一般指的就是系統(tǒng)文件夾:\windows\system32, 臨時(shí)文件夾,windows文件夾
看下面,我們使用環(huán)境變量來(lái)獲得windows目錄,關(guān)于環(huán)境變量我們會(huì)在后面詳細(xì)講道,如果我忘記了 請(qǐng)大家提醒我
set fs=wscript.createobject(“scripting.filesystemobject”)
set wshshell=wscript.createobject(“wscript.shell”)
osdir=wshshell.expandenvironmentstrings(“%systemroot%”)
set f =fs.getfolder(osdir)
wscript.echo f
當(dāng)然,還有簡(jiǎn)單的方法 那就是使用getspecialfolder()
這個(gè)方法使用3種值:
0 表示windows文件夾,相關(guān)常量是windowsfolder
1 系統(tǒng)文件夾,相關(guān)常量是systemfolder
2 臨時(shí)目錄,相關(guān)常量temporaryfolder
看下面的例子:
***********************************getspecialfolder***************************
set fs=wscript.createobject(“scripting.filesystemobject”)
set wfolder=fs.getspecialfolder(0) ‘返回windows目錄
set wfolder=fs.getspecialfolder(1) ‘返回system32\
set wfolder=fs.getspecialfolder(2)'返回臨時(shí)目錄
3、使用文件
使用文件屬性:
文件夾的屬性我沒(méi)有說(shuō),大家可以從文件屬性里舉一反三
文件屬性常用的就是:
normal 0
readonly 1
hideen 2
system 4
set fs=wscript.createobject(“scripting.filesystemobject”)
set f=fs.gerfile(“d:\index.txt”)
f.attributes=f.attributes+1
這里由于不知道d:\index.txt的文件屬性,所以會(huì)發(fā)生不可預(yù)測(cè)的結(jié)果,如果文件的屬性是0,那么就會(huì)變成1。所以最好在改變屬性前查詢
創(chuàng)建
創(chuàng)建前需要檢查文件是否存在,方法和前面說(shuō)的文件夾的方法一樣
*****************************file.vbs**********************************
set fs=wscript.createobject(“scripting.filesystemobject”)
if fs.fileexists(“c:\asd.txt”) then
s=” available”
else
s=not exist”
set f=fs.createtextfile(“c:\asd.txt”)
end if
當(dāng)然 我們也可以使用set f=fs.createtextfile(“c:\asd.txt”,true)
來(lái)強(qiáng)制覆蓋已存在的文件。
復(fù)制移動(dòng)刪除文件
和文件夾一樣 我們既可以使用fso提供的方法也可以用file對(duì)象
set fs=wscript.createobject(“scripting.filesystemobject”)
fs.copyfile “c:\asd.txt”,”d:\1\asd.txt”,true ‘復(fù)制文件,如果已存在就強(qiáng)制覆蓋
fs.movefile “c:\asd.txt”, “d:\” ‘移動(dòng)
fs.deletefile “c:\asd.txt” ‘刪除
好了,下一章我們就要學(xué)習(xí)文件的讀寫了,文件的讀寫是文件系統(tǒng),尤其是黑客編程里面十分重要的一部分,今天打字可能有很多錯(cuò)誤,大家看的時(shí)候仔細(xì)一點(diǎn),不懂得多看看msdn, 要提高水平只有靠自己,別人是幫不了你的
相關(guān)文章
vbs sendKeys Virtual-Key Codes 十六進(jìn)制符號(hào)
下表顯示了十六進(jìn)制符號(hào)常量名,,由系統(tǒng)所使用的虛擬鍵碼和鼠標(biāo)或鍵盤等值。這些代碼數(shù)字順序列出。2011-02-02用vbs實(shí)現(xiàn)隨機(jī)讀取文件的一行內(nèi)容的腳本
用vbs實(shí)現(xiàn)隨機(jī)讀取文件的一行內(nèi)容的腳本...2007-10-10利用vbs腳本實(shí)現(xiàn)設(shè)置IE的打印頁(yè)眉頁(yè)腳信息
這篇文章主要為大家分享下通過(guò)vbs腳本實(shí)現(xiàn)設(shè)置IE的打印頁(yè)眉頁(yè)腳信息的代碼,需要的朋友可以參考下2007-02-02VBS教程:VBscript語(yǔ)句-On Error 語(yǔ)句
VBS教程:VBscript語(yǔ)句-On Error 語(yǔ)句...2006-11-11用VBScript批量安裝網(wǎng)絡(luò)打印機(jī)和設(shè)置默認(rèn)打印機(jī)
假如你有幾十臺(tái)機(jī)器,幾臺(tái)打印機(jī),共享網(wǎng)絡(luò)上有網(wǎng)絡(luò)打印機(jī)的安裝驅(qū)動(dòng),可是每臺(tái)電腦都點(diǎn)擊幾次驅(qū)動(dòng)十分麻煩,本人做了個(gè)VBS,這樣就方便多了,拿來(lái)和大家分享,不足之處請(qǐng)見(jiàn)諒!2009-03-03