Solved

Read the first line from every file in a folder

Posted on 2009-05-12
4
231 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

DevOps Toolchain Recommendations

Read this Gartner Research Note and discover how your IT organization can automate and optimize DevOps processes using a toolchain architecture.

Question has a verified solution.

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

Suggested Solutions

Have you ever wanted to restrict the users input in a textbox to numbers, and while doing that make sure that they can't 'cheat' by pasting in non-numeric text? Of course you can do that with code you write yourself but it's tedious and error-prone …
Since upgrading to Office 2013 or higher installing the Smart Indenter addin will fail. This article will explain how to install it so it will work regardless of the Office version installed.
Get people started with the process of using Access VBA to control Excel using automation, Microsoft Access can control other applications. An example is the ability to programmatically talk to Excel. Using automation, an Access application can laun…
Get people started with the utilization of class modules. Class modules can be a powerful tool in Microsoft Access. They allow you to create self-contained objects that encapsulate functionality. They can easily hide the complexity of a process from…

914 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

Need Help in Real-Time?

Connect with top rated Experts

13 Experts available now in Live!

Get 1:1 Help Now