Solved

Read the first line from every file in a folder

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

Free Tool: Port Scanner

Check which ports are open to the outside world. Helps make sure that your firewall rules are working as intended.

One of a set of tools we are providing to everyone as a way of saying thank you for being a part of the community.

Question has a verified solution.

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

Suggested Solutions

Title # Comments Views Activity
VBScript/Batch: Check the contains of file with a todays creation date 6 47
Change path in batch file 2 47
ROBOFTP UNZIP 1 53
Batch: reboot servers one by one. 4 23
I have published numerous articles here at Experts Exchange that present programs/scripts written in a language called AutoHotkey. Each of those articles has a brief paragraph describing where to download the product and how to install it. I have al…
How to remove superseded packages in windows w60 or w61 installation media (.wim) or online system to prevent unnecessary space. w60 means Windows Vista or Windows Server 2008. w61 means Windows 7 or Windows Server 2008 R2. There are various …
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…
Show developers how to use a criteria form to limit the data that appears on an Access report. It is a common requirement that users can specify the criteria for a report at runtime. The easiest way to accomplish this is using a criteria form that a…

830 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