麻豆小视频在线观看_中文黄色一级片_久久久成人精品_成片免费观看视频大全_午夜精品久久久久久久99热浪潮_成人一区二区三区四区

首頁 > 編程 > VBScript > 正文

用vbscript合并多個(gè)文本文件的代碼

2020-07-26 12:01:22
字體:
供稿:網(wǎng)友
問:
嗨,Scripting Guy!在命令提示符中,可以執(zhí)行命令“copy a.txt+b.txt ab.txt”來提取 a.txt 和 b.txt 的內(nèi)容,然后將它們合并到名為 ab.txt 的新文件中。可以使用腳本來實(shí)現(xiàn)相同的操作嗎?

-- DL

答:
嗨,DL。在昨天的專欄文章中,我們探討了有關(guān)文本文件的問題;更具體地講,我們討論如何使用腳本來修改 .INI 文件。我們提到,這種解決方法盡管不是很巧妙,但可以達(dá)到目的。就今天的問題來說,同樣是這種情況。我們可以使用腳本來合并文本文件嗎?是的,可以。只不過有一點(diǎn)繁瑣,但效果很好。

我們所遇到的難題是,WSH 和 VBScript 都無法通過一條命令來合并文本文件,例如,objFile.AddTextFiles("file1.log","file2.log")。這有點(diǎn)讓人失望,但我們不會(huì)就此罷手,我們依然可以合并文本文件;只不過需要多執(zhí)行幾個(gè)步驟罷了。例如,要將 File1.log 和 File2.log 合并為一個(gè)文件(我們將其命名為 Output.txt),需要先讀取 File1.log,將該文件的內(nèi)容附加到 output.txt 末尾,然后讀取 File2.log,再將該 文件的內(nèi)容附加到 Output.txt 末尾。事實(shí)上,我們必須使用類似下面的腳本:

復(fù)制代碼 代碼如下:

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ù)雜。首先,我們定義一個(gè)常量 (ForReading),用于打開每個(gè)日志文件。接下來,創(chuàng)建一個(gè) FileSystemObject(用于處理文本文件的腳本技術(shù))實(shí)例,并使用 CreateTextFile 方法創(chuàng)建一個(gè)名為 Output.txt 的新文件。

然后,打開第一個(gè)文件 (C:/Logs/File1.log) 來讀取其中的內(nèi)容。我們使用 ReadAll 方法讀入整個(gè)文本文件,并將該信息存儲(chǔ)在變量 strText 中。然后,關(guān)閉 File1.log,并使用 WriteLine 方法將剛讀入的信息附加到新文件 Output.txt 的末尾。接下來,對下一個(gè)文件 (C:/Logs/File2.log) 執(zhí)行相同的過程。讀入第二個(gè)文件后,Output.txt 將包含第一個(gè)文件以及 第二個(gè)文件中的所有信息。哈哈,我們成功了!

我們知道您在想什么:不錯(cuò),盡管上述腳本可以實(shí)現(xiàn)目的,但問題是您必須“事先”知道文件夾 C:/Logs 中所有文件的名稱。那么,編寫一個(gè)腳本以獲取 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

實(shí)際上,我們在此處執(zhí)行的全部操作是獲取 C:/Logs 文件夾中所有文件的集合;這是通過以下 WMI Associators of 查詢實(shí)現(xiàn)的:

Set FileList = objWMIService.ExecQuery _
    ("ASSOCIATORS OF {Win32_Directory.Name='C:/Logs'} Where " _
        & "ResultClass = CIM_DataFile")

在獲取這一集合后,我們可以立即使用 For-Each 循環(huán)打開每個(gè)文件并讀入其中的文本(使用 ReadAll 方法,與上文中的代碼相同)。然后關(guān)閉該文件,將文本附加到輸出文件的末尾。接下來再執(zhí)行一次循環(huán),對集合中的下一個(gè)文件執(zhí)行相同的過程。只需片刻,就可以將 C:/Logs 中所有文件的所有文本提取出來,并將它們合并為一個(gè)名為 output.txt 的新文件。整個(gè)過程就是這么簡單。
發(fā)表評論 共有條評論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 国产精品成人亚洲一区二区 | 国产高潮好爽受不了了夜色 | 成人一区二区在线观看视频 | 精品亚洲视频在线 | 成人免费自拍视频 | 毛片电影网址 | 成人性视频在线 | 久草在线免费资源站 | 亚洲影视中文字幕 | 99日韩精品视频 | 五月婷婷第四色 | 久久国产不卡 | 懂色av懂色aⅴ精彩av | 最新av在线播放 | av国产免费 | 久久蜜桃精品一区二区三区综合网 | 成人在线视频网 | 蜜桃网在线 | 中文字幕欧美一区二区三区 | 国产深夜福利视频在线播放 | 污视频在线免费播放 | 日韩视频高清 | 禁漫天堂久久久久久久久久 | h视频免费在线观看 | 红杏亚洲影院一区二区三区 | 成人在线免费小视频 | 亚洲一区二区三区视频免费 | 逼特逼视频在线观看 | 午夜视频在线看 | 欧美成年视频 | 欧美成年人在线视频 | 一级在线| 久久国产成人精品国产成人亚洲 | 日本高清黄色片 | 欧美日韩亚洲精品一区二区三区 | 99国产精品白浆在线观看免费 | 国产精品视频一区二区噜噜 | 亚洲影院在线 | 欧美 日本 在线 | 国产一级一级 | 操嫩草 |