用vbscript合并多個文本文件的代碼
問:
嗨,Scripting Guy!在命令提示符中,可以執(zhí)行命令“copy a.txt+b.txt ab.txt”來提取 a.txt 和 b.txt 的內(nèi)容,然后將它們合并到名為 ab.txt 的新文件中。可以使用腳本來實現(xiàn)相同的操作嗎?
-- DL
答:
嗨,DL。在昨天的專欄文章中,我們探討了有關(guān)文本文件的問題;更具體地講,我們討論如何使用腳本來修改 .INI 文件。我們提到,這種解決方法盡管不是很巧妙,但可以達(dá)到目的。就今天的問題來說,同樣是這種情況。我們可以使用腳本來合并文本文件嗎?是的,可以。只不過有一點繁瑣,但效果很好。
我們所遇到的難題是,WSH 和 VBScript 都無法通過一條命令來合并文本文件,例如,objFile.AddTextFiles("file1.log","file2.log")。這有點讓人失望,但我們不會就此罷手,我們依然可以合并文本文件;只不過需要多執(zhí)行幾個步驟罷了。例如,要將 File1.log 和 File2.log 合并為一個文件(我們將其命名為 Output.txt),需要先讀取 File1.log,將該文件的內(nèi)容附加到 output.txt 末尾,然后讀取 File2.log,再將該 文件的內(nèi)容附加到 Output.txt 末尾。事實上,我們必須使用類似下面的腳本:
Const ForReading = 1
Set objFSO = CreateObject("Scripting.FileSystemObject")
Set objOutputFile = objFSO.CreateTextFile("output.txt")
Set objTextFile = objFSO.OpenTextFile("c:\logs\file1.log", ForReading)
strText = objTextFile.ReadAll
objTextFile.Close
objOutputFile.WriteLine strText
Set objTextFile = objFSO.OpenTextFile("c:\logs\file2.log ", ForReading)
strText = objTextFile.ReadAll
objTextFile.Close
objOutputFile.WriteLine strText
objOutputFile.Close
正如您所看到的一樣,該腳本并不是特別復(fù)雜。首先,我們定義一個常量 (ForReading),用于打開每個日志文件。接下來,創(chuàng)建一個 FileSystemObject(用于處理文本文件的腳本技術(shù))實例,并使用 CreateTextFile 方法創(chuàng)建一個名為 Output.txt 的新文件。
然后,打開第一個文件 (C:\Logs\File1.log) 來讀取其中的內(nèi)容。我們使用 ReadAll 方法讀入整個文本文件,并將該信息存儲在變量 strText 中。然后,關(guān)閉 File1.log,并使用 WriteLine 方法將剛讀入的信息附加到新文件 Output.txt 的末尾。接下來,對下一個文件 (C:\Logs\File2.log) 執(zhí)行相同的過程。讀入第二個文件后,Output.txt 將包含第一個文件以及 第二個文件中的所有信息。哈哈,我們成功了!
我們知道您在想什么:不錯,盡管上述腳本可以實現(xiàn)目的,但問題是您必須“事先”知道文件夾 C:\Logs 中所有文件的名稱。那么,編寫一個腳本以獲取 C:\Logs 中的所有文件并將它們合并在一起,豈不是更好?嗯,我們還未曾這樣想過。您所說的是不是類似下面的腳本:
Const ForReading = 1
Set objFSO = CreateObject("Scripting.FileSystemObject")
Set objOutputFile = objFSO.CreateTextFile("output.txt")
strComputer = "."
Set objWMIService = GetObject("winmgmts:\\" & strComputer & "\root\cimv2")
Set FileList = objWMIService.ExecQuery _
("ASSOCIATORS OF {Win32_Directory.Name='C:\Logs'} Where " _
& "ResultClass = CIM_DataFile")
For Each objFile In FileList
Set objTextFile = objFSO.OpenTextFile(objFile.Name, ForReading)
strText = objTextFile.ReadAll
objTextFile.Close
objOutputFile.WriteLine strText
Next
objOutputFile.Close
實際上,我們在此處執(zhí)行的全部操作是獲取 C:\Logs 文件夾中所有文件的集合;這是通過以下 WMI Associators of 查詢實現(xiàn)的:
Set FileList = objWMIService.ExecQuery _
("ASSOCIATORS OF {Win32_Directory.Name='C:\Logs'} Where " _
& "ResultClass = CIM_DataFile")
在獲取這一集合后,我們可以立即使用 For-Each 循環(huán)打開每個文件并讀入其中的文本(使用 ReadAll 方法,與上文中的代碼相同)。然后關(guān)閉該文件,將文本附加到輸出文件的末尾。接下來再執(zhí)行一次循環(huán),對集合中的下一個文件執(zhí)行相同的過程。只需片刻,就可以將 C:\Logs 中所有文件的所有文本提取出來,并將它們合并為一個名為 output.txt 的新文件。整個過程就是這么簡單。
上一篇:一個把任何文件轉(zhuǎn)成批處理的vbs腳本Any2Bat.vbs
欄 目:vb
下一篇:用vbs實現(xiàn)確定是否安裝了某個特定的補(bǔ)丁
本文標(biāo)題:用vbscript合并多個文本文件的代碼
本文地址:http://mengdiqiu.com.cn/a1/vb/7857.html
您可能感興趣的文章
- 01-10VBS中的正則表達(dá)式的用法大全 <font color=red>原創(chuàng)&
- 01-10VBS中SendKeys的基本應(yīng)用
- 01-10VBScript教程 第十一課深入VBScript
- 01-10用VBSCRIPT控制ONSUBMIT事件
- 01-10VBScript語法速查及實例說明
- 01-10VBS中Select CASE的其它用法
- 01-10VBScript教程 第七課使用條件語句
- 01-10vbscript 可以按引用傳遞參數(shù)嗎?
- 01-10VBScript教程 第二課在HTML頁面中添加VBscript代碼
- 01-10VBScript教程 第十四課在VBScript中使用對象


閱讀排行
本欄相關(guān)
- 01-10下載文件到本地運行的vbs
- 01-10飄葉千夫指源代碼,又稱qq刷屏器
- 01-10SendKeys參考文檔
- 01-10什么是一個高效的軟件
- 01-10VBS中的正則表達(dá)式的用法大全 &l
- 01-10exe2swf 工具(Adodb.Stream版)
- 01-10VBS中SendKeys的基本應(yīng)用
- 01-10用VBSCRIPT控制ONSUBMIT事件
- 01-10VBScript教程 第十一課深入VBScript
- 01-10VBScript語法速查及實例說明
隨機(jī)閱讀
- 01-10delphi制作wav文件的方法
- 01-10C#中split用法實例總結(jié)
- 01-10使用C語言求解撲克牌的順子及n個骰子
- 01-11ajax實現(xiàn)頁面的局部加載
- 04-02jquery與jsp,用jquery
- 01-11Mac OSX 打開原生自帶讀寫NTFS功能(圖文
- 01-10SublimeText編譯C開發(fā)環(huán)境設(shè)置
- 08-05dedecms(織夢)副欄目數(shù)量限制代碼修改
- 08-05織夢dedecms什么時候用欄目交叉功能?
- 08-05DEDE織夢data目錄下的sessions文件夾有什