VBScript中的快速文件操作?

时间:2018-02-17 12:29:56

标签: vbscript fso

在本地Windows 10计算机上使用VBScript来自动执行某些任务。处理大型二进制文件(500 MB至2 GB)。 FileSystemObject的文件处理非常慢! ADODB速度很快,但是将整个文件加载到内存中,这是一个很大的禁忌,因为我将同时在多个文件(在多个磁盘上)上运行脚本。 任何替代方案?

以下是FSO处理607 MB文件大约需要26秒的示例。单独跳过600 MB就会耗费25秒!

Dim i, f1, f2, dT
Dim objFSO1, objStream1, objFSO2, objStream2

f1 = "OriginalFile.tmp"
f2 = "OutputFile.tmp"

Set objFSO1 = CreateObject("Scripting.FileSystemObject")
Set objStream1 = objFSO1.OpenTextFile(f1, 1)

Set objFSO2 = CreateObject("Scripting.FileSystemObject")
Set objStream2 = objFSO2.OpenTextFile(f2, 8, True)

dT = Timer
For i = 0 To 4
    'Call objStream2.Write(objStream1.Read(1048576))
    Call objStream1.Read(1048576)
Next
dT = Timer - dT
Call WScript.Echo(dT & " seconds so far...")

dT = Timer
Call objStream1.Skip(629145600)
dT = Timer - dT
Call WScript.Echo("Skipping took " & dT & " seconds!")

dT = Timer
Do While Not objStream1.AtEndOfStream
    'Call objStream2.Write(objStream1.Read(1048576))
    Call objStream1.Read(1048576)
Loop
dT = Timer - dT
Call WScript.Echo("Another " & dT & " seconds.")

Call objStream1.Close(): Call objStream2.Close()
Set objStream1 = Nothing: Set objStream2 = Nothing
Set objFSO1 = Nothing: Set objFSO2 = Nothing

正如您所看到的那样,仅在从磁盘读取数据时进行测试,以消除写入磁盘导致速度减慢的可能性。相同的差异!

0 个答案:

没有答案