Solved

GetFiles mask

Posted on 2007-11-19
5
370 Views
Last Modified: 2008-02-01
This should be easy but I'm stumped.  I am doing a Directory.GetFiles and want to only find files beginning with GP, having a character for the third spot, and ending in 5 digits plus an extension of ".inh".  It must be exactly that.

So for example, a filename might be GPW12345.INH.

I'd want to not find files such as GPW12345ABCDEFG.INH and GPWABCDE.INH.

I'd think a mask such as "GP?#####.INH" would work but it does not.  I tried "GP??????.INH" and it returns files longer than 8+3 in length.

How can I do this?

Thanks,
Chris
0
Comment
Question by:chlade
  • 2
  • 2
5 Comments
 
LVL 8

Expert Comment

by:Autoeforms
ID: 20313371
something like this should do the trick.
please note i did not compile and test this.
but the idea is to get your list of INH files and then
rip through the array building a new array for all the files
that match your criteria.

hope this helps
greg

        Dim sFileName As String

        Dim sFileNameWithPath As String

        Dim sNewList() As String

        Dim iX As Integer = 0

        Dim sCh As String

        For Each sFileNameWithPath In sFiles

            sFileNAme = System.IO.Path.GetFileNameWithoutExtension(sFileNameWithPath)

            sCh = Mid(sfilename, 3, 1).toupper

            If sFileName.length > 8 Then

            elseIf sCH < "A" orelse _  sch > "Z" Then

            ElseIf IsNumeric(Mid(sfilename, 4, 5)) = False Then

            Else

                ReDim Preserve sNewList(iX)

                sNewList(iX) = sfilename

                iX += 1

            End If

        Next

Open in new window

0
 

Author Comment

by:chlade
ID: 20313412
Ok.  I thought of doing that but was hoping there was a way to do it via a file mask so that I don't have to loop through all of them.

Is that possible or am I left with no option other than to loop through them?
0
 
LVL 8

Accepted Solution

by:
Autoeforms earned 400 total points
ID: 20313452
none that i know of.
i would build it as a function call and have it return the result you want

g
0
 
LVL 27

Assisted Solution

by:VBRocks
VBRocks earned 100 total points
ID: 20313500
I think you are actually going to have to loop through them, but here's an example of how you can
search for a match using RegEx:

        Dim pattern As String = "GP[A-Z,a-z][0-9]{5}.INH"    'pattern to serach for
        Dim match As System.Text.RegularExpressions.Match

        Dim list As New List(Of IO.FileInfo)
        For Each fil As IO.FileInfo In _
            New IO.DirectoryInfo("C:\TEMP\Test").GetFiles("GP*.INH")

            match = System.Text.RegularExpressions.Regex.Match(fil.Name, pattern)

            If match.Success = True Then
                list.Add(fil)
            End If

        Next


        'View list:
        For Each item As IO.FileInfo In list
            Debug.WriteLine(item.Name)

        Next

0
 

Author Comment

by:chlade
ID: 20316835
Thanks for the help!
0

Featured Post

Is Your Active Directory as Secure as You Think?

More than 75% of all records are compromised because of the loss or theft of a privileged credential. Experts have been exploring Active Directory infrastructure to identify key threats and establish best practices for keeping data safe. Attend this month’s webinar to learn more.

Question has a verified solution.

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

This tutorial demonstrates one way to create an application that runs without any Forms but still has a GUI presence via an Icon in the System Tray. The magic lies in Inheriting from the ApplicationContext Class and passing that to Application.Ru…
1.0 - Introduction Converting Visual Basic 6.0 (VB6) to Visual Basic 2008+ (VB.NET). If ever there was a subject full of murkiness and bad decisions, it is this one!   The first problem seems to be that people considering this task of converting…
Along with being a a promotional video for my three-day Annielytics Dashboard Seminor, this Micro Tutorial is an intro to Google Analytics API data.
Internet Business Fax to Email Made Easy - With  eFax Corporate (http://www.enterprise.efax.com), you'll receive a dedicated online fax number, which is used the same way as a typical analog fax number. You'll receive secure faxes in your email, f…

867 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

15 Experts available now in Live!

Get 1:1 Help Now