Here's how you can split any file into as many multiple parts as you need.  This is good for when you need to read very large log files on windows machines.
Option Explicit
'variables for the text files
Dim sourcefile,target1,targetDir,basename,targetfile,strfilenum,filenumber,linenumber
'variables objects
Dim objfs, isnotsplit, WorkingFolder
'initialize arguments
     Set objfs = CreateObject("Scripting.FileSystemObject")
     Set WorkingFolder = objfs.GetFolder(".\")
     sourcefile = WorkingFolder & "\source.txt"
      basename = "splitlog"
    targetDir = WorkingFolder & "\newfiles\"
     filenumber = 1
     linenumber = 1
     ' check the file exists
     If objFS.FileExists( sourceFile ) Then
          WScript.Echo ("input file exists...")
          strfilenum = "" & filenumber & ""
          targetfile = targetDir + "\" + basename + "_" + strfilenum + "." + objFS.GetExtensionName(sourceFile)
          Set target1 = objFS.CreateTextFile(targetfile, True)   
           WScript.Echo "Creating file " & filenumber & "."
           
          With objfs.OpenTextFile(sourceFile)  
       
            While Not .AtEndOfStream  
                  ' new files          
                  If linenumber <>
                     target1.WriteLine .ReadLine 
                     linenumber = linenumber + 1 
                   Else
                       target1.WriteLine .ReadLine
                       target1.close 
                       filenumber = filenumber + 1
                       strfilenum = "" & filenumber & ""
                       targetfile = targetDir + "\" + basename + "_" + strfilenum + "." + objFS.GetExtensionName(sourceFile)
                      Set target1 = objFS.CreateTextFile(targetfile, True)
                      linenumber = 1
                      WScript.Echo "Creating file " & filenumber & "."
                  End If
              Wend  
          .Close  
        End With  
    target1.Close
    If( strfilenum = 1 ) Then
        WScript.Echo ("input file not split(Too Small)...")
    else
           WScript.Echo ("input file split...")
    End If
Else
    WScript.Echo ("input file does not exist...")
End if
WScript.Echo ("finished!")
'end
No matter how many resulting parts you need, this script will work.  every 60,000 lines it just starts a new file with a new file name.   I used this to split a log with over 1.2million lines.(180 meg txt file.)
Thursday, March 5, 2009
Subscribe to:
Comments (Atom)
