在搜索有关在 VBScript 中合并文本文件的提示时,我遇到了这个示例:https://gallery.technet.microsoft.com/scriptcenter/Merge-multiple-txt-files-cbe9625c
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='z:\Scripts\Test'} 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
说明如下:
You can merge multiple txt files from specific folder to one txt file. It will merge all data to one txt file. You dont need to copy data manually. You can execute this script directly or from command promt. In this script you need to change the folder path from z:\Scripts\Test to your existing path where all txt files are available as well as change the name "output.txt" with your require output file name and path.
虽然我对 VBScript 还很陌生(并且已经非常非常很长一段时间没有编写 VBScript),但我不明白使用此 WMI 服务来完成如此简单的任务有什么意义(即处理同一文件夹中的文件)。
仅使用 folder.Files
然后根据需要过滤文件难道还不够吗?
感谢您的帮助。
最佳答案
您说得完全正确,使用 WMI 来完成此任务是愚蠢的。
这样就可以了,而且速度也会快很多:
Option Explicit
Dim FSO, OutputFile, File
Set FSO = CreateObject("Scripting.FileSystemObject")
Set OutputFile = FSO.CreateTextFile("output.txt")
For Each File In FSO.GetFolder("Z:\Scripts\Test").Files
If LCase(FSO.GetExtensionName(File.Name)) = "txt" Then
With FSO.OpenTextFile(File.Path)
OutputFile.WriteLine .ReadAll
.Close
End With
End If
Next
OutputFile.Close
关于merge - 我是否需要使用 WMI 才能在 VBScript 中合并文本文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56644998/