用VBScript寫合并文本文件的腳本
更新時(shí)間:2009年04月28日 08:59:19 作者:
今天用腳本實(shí)現(xiàn)幾個(gè)文本文件的合并,被FSO中的幾個(gè)函數(shù)絆住了好久,最終認(rèn)定這里應(yīng)該是Window里的Bug。
合并文本的腳本可以這么寫:
Sub AppendTextFile(filename)
Set objTextFile = objFSO.OpenTextFile(filename, ForReading, true, -2)
Do Until objTextFile.AtEndOfStream
objOutFile.WriteLine(objTextFile.Readline)
Loop
End Sub
可是如果所讀取的文件是UTF-8格式的,那么文件開頭的三個(gè)字節(jié)的標(biāo)識(shí)符會(huì)被腳本認(rèn)為是數(shù)據(jù),這樣這個(gè)標(biāo)識(shí)符就變成了合并后文件里的亂碼。
FSO是提供了打開Unicode文件的參數(shù)的,可惜這里并不生效。
請(qǐng)教了Google大師,發(fā)現(xiàn)有人說用OpenAsTextStream是可以的,可惜在我的環(huán)境里還是不成功。
另外一個(gè)想法是讀入文件的時(shí)候,自行判斷文件開始三個(gè)字節(jié)是否標(biāo)識(shí)符,這也被判斷是不可行的方法,因?yàn)镕SO提供的Read是按字符進(jìn)行讀取,這樣,在有中文的環(huán)境里,我們不可能正好讀出這三個(gè)字節(jié)。
類似的問題在IIS6里面被微軟確認(rèn),好像也有一個(gè)對(duì)應(yīng)的補(bǔ)丁出來,但是對(duì)于批處理文件的情況,似乎還是沒有修改過來。
最后,MSDN幫了很大的忙,但是它的地址很不好找,記錄一下:
http://msdn.microsoft.com/en-us/library/ms950396.aspx
復(fù)制代碼 代碼如下:
Sub AppendTextFile(filename)
Set objTextFile = objFSO.OpenTextFile(filename, ForReading, true, -2)
Do Until objTextFile.AtEndOfStream
objOutFile.WriteLine(objTextFile.Readline)
Loop
End Sub
可是如果所讀取的文件是UTF-8格式的,那么文件開頭的三個(gè)字節(jié)的標(biāo)識(shí)符會(huì)被腳本認(rèn)為是數(shù)據(jù),這樣這個(gè)標(biāo)識(shí)符就變成了合并后文件里的亂碼。
FSO是提供了打開Unicode文件的參數(shù)的,可惜這里并不生效。
TristateUseDefault |
-2 |
Opens the file using the system default. |
TristateTrue |
-1 |
Opens the file as Unicode. |
TristateFalse |
0 |
Opens the file as ASCII. |
另外一個(gè)想法是讀入文件的時(shí)候,自行判斷文件開始三個(gè)字節(jié)是否標(biāo)識(shí)符,這也被判斷是不可行的方法,因?yàn)镕SO提供的Read是按字符進(jìn)行讀取,這樣,在有中文的環(huán)境里,我們不可能正好讀出這三個(gè)字節(jié)。
類似的問題在IIS6里面被微軟確認(rèn),好像也有一個(gè)對(duì)應(yīng)的補(bǔ)丁出來,但是對(duì)于批處理文件的情況,似乎還是沒有修改過來。
最后,MSDN幫了很大的忙,但是它的地址很不好找,記錄一下:
http://msdn.microsoft.com/en-us/library/ms950396.aspx
您可能感興趣的文章:
相關(guān)文章
用VBS實(shí)現(xiàn)的批量gb2312轉(zhuǎn)utf-8,支持拖動(dòng)
用VBS實(shí)現(xiàn)的批量gb2312轉(zhuǎn)utf-8,支持拖動(dòng)...2007-10-10用vbs實(shí)現(xiàn)的一款Worm.Win32.VB.fw病毒專殺
這篇文章主要介紹了用vbs實(shí)現(xiàn)的一款Worm.Win32.VB.fw病毒專殺2007-06-06vbs 腳本錯(cuò)誤:操作中文件名或類名未找到的解決方法
昨天下午閑得無事,于是翻出以前的腳本,嘗試運(yùn)行,結(jié)果卻出現(xiàn)了如圖所示的錯(cuò)誤2013-07-07