VBS:合并名称几乎相等的文件




我在文件夹中有数百个文件,它们的名称几乎相同,如1560q90j-a.txt1560 q90j-b.txt。这些文件是临时(随机)生成的
如何在给定的文件夹中合并这些文件,这些文件一开始有相同的九个字符,然后是一个不同的字符。同时删除源文件:

 Commandline: copy 1560q90j-a.txt+1560q90j-b.txt 1560q90j.txt
 Commandline: del 1560q90j-?.txt
 Commandline: copy atiy09hr-a.txt+atiy09hr-a.txt atiy09hr.txt
 Commandline: del atiy09hr-?.txt

稍后,我将把所有新文件合并为一个文件,其中一行空白作为文件内容之间的分隔符:

 Commandline: copy 560q90j.txt+blankline.txt+atiy09hr.txt+blankline.txt+ ... Allfile.txt

也许有人能帮我用VBS编写一个脚本来实现我的愿望。

谢谢!Mitch

这应该做到:

Const ForReading = 1
Const ForAppending = 8
Set objFSO = CreateObject("Scripting.FileSystemObject")
objStartFolder = "C:temptest" 'the folder where your text files are
Set objFolder = objFSO.GetFolder(objStartFolder)
Set colFiles = objFolder.Files
For Each objFile in colFiles
        Set writefile = objFSO.OpenTextFile("C:Temp" & Left(objFile.Name, 8) & ".txt", ForAppending, True)'open output file based on first 8 letters of found file
        set readfile = objFSO.OpenTextFile(objStartFolder & objFile.Name, ForReading, False) 'open found file
        contents = readfile.ReadAll  'read its content
        writefile.WriteLine(contents)  'append to output file
        readfile.close  'close file
        writefile.Close()
        objFSO.DeleteFile(objStartFolder & objFile.Name) 'delete file
Next

谢谢,第一部分效果很好。在第二部分中,我采用了这个脚本: Const ForReading = 1 Set objFSO = CreateObject("Scripting.FileSystemObject") Set objOutputFile = objFSO.CreateTextFile("output.txt") ' in CurrenDirectory strComputer = "." ' This Computer Set objWMIService = GetObject("winmgmts:\" & strComputer & "rootcimv2") Set FileList = objWMIService.ExecQuery _ ("ASSOCIATORS OF {Win32_Directory.Name='C:Temp'} Where " _ & "ResultClass = CIM_DataFile") For Each objFile In FileList Set objTextFile = objFSO.OpenTextFile(objFile.Name, ForReading) strText = objTextFile.ReadAll objTextFile.Close objOutputFile.WriteLine strText & vbcrlf Next objOutputFile.Close

再次感谢和情人节问候

最新更新