我们使用 FileSystemObject 对象创建文件时候,由于这是个早期版本,你想创建一个utf-8编码的文件,或者读取时候,很容易出现乱码。这时候,你可以使用 ADODB.Stream 对象:
下面的代码就是一个简单的vbScript例子,
把C:\Logs\ 目录下的所有文件和并到一个568.txt 文件:
Function LoadFile(Path)
Dim Stm2
Set Stm2 = CreateObject("ADODB.Stream")
Stm2.Type = 2
Stm2.Mode = 3
Stm2.Open
Stm2.LoadFromFile Path
'Stm2.Charset = "UTF-8"
'Stm2.Charset = "Unicode"
Stm2.Charset = "GB2312"
Stm2.position = 0
LoadFile = Stm2.ReadText
Stm2.Close
Set Stm2 = nothing
End Function
Dim Stm1
Set Stm1 = CreateObject("ADODB.Stream")
Stm1.Type = 2
Stm1.Open
'Stm1.Charset = "UTF-8"
Stm1.Charset = "Unicode"
Stm1.Position = Stm1.Size
Set fso = CreateObject("Scripting.FileSystemObject")
Set f = fso.GetFolder("C:\Logs\")
Set fc = f.Files
For Each f1 in fc
'Wscript.Echo f1.name
Message = LoadFile("C:\Logs\"&f1.name)
'Wscript.Echo Message
Stm1.WriteText Message
Next
set fc = nothing
set f = nothing
set fso = nothing
Stm1.SaveToFile "568.txt",2
Stm1.Close
set Stm1 = nothing
注意:你需要根据你自己对应文件夹下文件的编码,设置ADODB.Stream 对象的 Charset 属性。
我就是在这个代码例子基础上,把我对数据库的每个表、存储过程定义的sql,合并为一个文件,这样,我可以在每次需要发布的时候,执行一边这个脚本,就自动产生需要发布的sql语句集合了。
附:
FileSystemObject 对象的创建文件说明
object.CreateTextFile(filename[, overwrite[, unicode]])
unicode 可选项。Boolean 值,指明文件是否以 Unicode 或 ASCII 文件方式创建。如果文件作为 Unicode 文件创建,则值为 true ,如果作为 ASCII 文件创建,则为 false。如果忽略,则假定为 ASCII 文件。