Solved

Read the first line from every file in a folder

Posted on 2009-05-12
4
238 Views
Last Modified: 2012-05-06
Hi Guys,

I am trying to figure out a way to read the first line of all the text files in a certain folder and write the results into another file for analysis.  The files are all datetime stamped and vary in their names and the first line of each file has a broad summary.  What I really want is to get the name of the file and its correspoding log summary into say a tab, comma or any other delimted file so that I can compare and archieve all the files.

I greatly appreciate all the help.

Cody
0
Comment
Question by:codysheilds
  • 2
4 Comments
 
LVL 21

Expert Comment

by:AmazingTech
ID: 24366747
Try this.
@ECHO OFF
Set Folder=C:\Folder
Set Results=C:\Results.csv
 
(for /f "tokens=*" %%a in ('dir /a-d /b "%Folder%\*.*"') do for /f "tokens=1,* delims=]" %%b in ('find /v /n "" %%a ^| find "[1]"') do echo "%%a","%%c")>%Results%

Open in new window

0
 
LVL 21

Accepted Solution

by:
AmazingTech earned 500 total points
ID: 24366755
Opps. Forgot the folder.
@ECHO OFF
Set Folder=C:\Folder
Set Results=C:\Results.csv
 
(for /f "tokens=*" %%a in ('dir /a-d /b "%Folder%\*.*"') do for /f "tokens=1,* delims=]" %%b in ('find /v /n "" "%Folder%\%%a" ^| find "[1]"') do echo "%%a","%%c")>%Results%

Open in new window

0
 
LVL 38

Expert Comment

by:Shift-3
ID: 24366850
Paste the script below into a text file with a .vbs extension.  Customize the value of the strFolder variable on line 5 with the location of the folder containing the files.  Customize the value of the strExt variable on line 6 with the file extension to search for.  Running the script will create a comma-delimited text file containing each file's name and first line.


Const ForReading = 1
Const ForWriting = 2
Const TriStateUseDefault = -2
 
strFolder = "c:\files"
strExt = "txt"
strOutput = "output.csv"
 
On Error Resume Next
 
Set objFSO = CreateObject("Scripting.FileSystemObject")
Set objOutput = objFSO.OpenTextFile(strOutput, ForWriting, True)
 
objOutput.WriteLine "File Name,First Line"
 
Set objFolder = objFSO.GetFolder(strFolder)
 
For Each objFile in objFolder.Files
    strFileExt = objFSO.GetExtensionName(objFile.Path)
    
    If LCase(strFileExt) = LCase(strExt) Then
        Set objTextFile = objFSO.OpenTextFile(objFile.Path, ForReading, False, TriStateUseDefault)
        strLine = objTextFile.ReadLine
        objTextFile.Close
        
        objOutput.WriteLine Chr(34) & objFile.Name & Chr(34) & "," & Chr(34) & strLine & Chr(34)
    End If
Next
 
objOutput.Close

Open in new window

0
 

Author Closing Comment

by:codysheilds
ID: 31580616
I ran it on close to 200 files (80MB) and it works exactly the way I wanted it to.  Thank you so very much!!  Its now time to run it on 5 Gig worth of files.  Thanks again.

Cody
0

Featured Post

3 Use Cases for Connected Systems

Our Dev teams are like yours. They’re continually cranking out code for new features/bugs fixes, testing, deploying, testing some more, responding to production monitoring events and more. It’s complex. So, we thought you’d like to see what’s working for us.

Question has a verified solution.

If you are experiencing a similar issue, please ask a related question

YESTERDAY YESTERDAY.BAT is inspired by a previous article I wrote entitled: TOMORROW.BAT (http://www.experts-exchange.com/OS/Microsoft_Operating_Systems/MS_DOS/A_4196-Advanced-Batch-File-Programming-TOMORROW-BAT.html). The crux of this batch f…
Use this article to create a batch file to backup a Microsoft SQL Server database to a Windows folder.  The folder can be on the local hard drive or on a network share.  This batch file will query the SQL server to get the current date & time and wi…
As developers, we are not limited to the functions provided by the VBA language. In addition, we can call the functions that are part of the Windows operating system. These functions are part of the Windows API (Application Programming Interface). U…
Get people started with the process of using Access VBA to control Outlook using automation, Microsoft Access can control other applications. An example is the ability to programmatically talk to Microsoft Outlook. Using automation, an Access applic…

832 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question