Copy Files

Collapse
This topic is closed.
X
X
 
  • Time
  • Show
Clear All
new posts
  • Masta

    Copy Files

    Hello Group.

    I have a directory with 3000 ".jpg" named like this:

    1234_01.jpg
    1234_09.jpg
    1234_11.jpg
    1234_12.jpg
    2341_01.jpg
    2341_05.jpg
    2341_06.jpg
    2341_08.jpg
    2341_09.jpg
    (...)

    Four figures (product reference) followed by "_"
    I need to copy one file of each reference to another directory.

    Thanks in advance.
  • zacks@construction-imaging.com

    #2
    Re: Copy Files

    On Apr 3, 12:51 pm, Masta <mllo...@areagr up.comwrote:
    Hello Group.
    >
    I have a directory with 3000 ".jpg" named like this:
    >
    1234_01.jpg
    1234_09.jpg
    1234_11.jpg
    1234_12.jpg
    2341_01.jpg
    2341_05.jpg
    2341_06.jpg
    2341_08.jpg
    2341_09.jpg
    (...)
    >
    Four figures (product reference) followed by "_"
    I need to copy one file of each reference to another directory.
    I don't think you can do that with just one scan of the files in the
    directory, that is by using a search string to return just one file
    that has a unique value in the first four characters of the file name.

    I would tackle it like this. I would generate a list of all possible
    files with a Directory.GetFi les method call. Then I would loop through
    the list an pick off the first four chacacters with a String.Substrin g
    method call. I would add the four letter value to a generic List(Of
    String), but only if it hasn't been added yet. Just use the
    List.Contains method to check that. Next I would loop through the list
    and do a Directory.GetFi les method call specifying a search string of
    <first four letters>*.jpg. Pick one them to copy, either random, the
    first one, the last one, whatever floats your boat, and copy it with
    the File.Copy method.

    Comment

    • Masta

      #3
      Re: Copy Files

      Thanks a lot.. I have sucessfully done it with your help.

      Comment

      • Chris Dunaway

        #4
        Re: Copy Files

        On Apr 3, 1:11 pm, za...@construct ion-imaging.com wrote:
        On Apr 3, 12:51 pm, Masta <mllo...@areagr up.comwrote:
        >
        >
        >
        Hello Group.
        >
        I have a directory with 3000 ".jpg" named like this:
        >
        1234_01.jpg
        1234_09.jpg
        1234_11.jpg
        1234_12.jpg
        2341_01.jpg
        2341_05.jpg
        2341_06.jpg
        2341_08.jpg
        2341_09.jpg
        (...)
        >
        Four figures (product reference) followed by "_"
        I need to copy one file of each reference to another directory.
        >
        I don't think you can do that with just one scan of the files in the
        directory, that is by using a search string to return just one file
        that has a unique value in the first four characters of the file name.
        >
        I would tackle it like this. I would generate a list of all possible
        files with a Directory.GetFi les method call. Then I would loop through
        the list an pick off the first four chacacters with a String.Substrin g
        method call. I would add the four letter value to a generic List(Of
        String), but only if it hasn't been added yet. Just use the
        List.Contains method to check that. Next I would loop through the list
        and do a Directory.GetFi les method call specifying a search string of
        <first four letters>*.jpg. Pick one them to copy, either random, the
        first one, the last one, whatever floats your boat, and copy it with
        the File.Copy method.
        What about this using VB2008? This selects a random filename for each
        product reference and copies it to a destination folder. It also
        saves calling GetFiles more than once.

        Private Sub Button_Click(.. .) Handles Button1.Click
        Dim rnd As New Random

        Dim files = From f In Directory.GetFi les("c:\test\fi lefind") _
        Group f By key = Path.GetFileNam e(f).Substring( 0,
        4) Into Group _
        Select Group(rnd.Next( 0, Group.Count))

        For Each f As String In files
        File.Copy(f, Path.Combine("c :\destination",
        Path.GetFileNam e(f)))
        Next
        End Sub

        If you just want the first file in each product reference group,
        change the Select line to

        Select Group(0)

        Or if you want the last file in each product reference group, change
        the Select line to

        Select Group(Group.Cou nt - 1)

        Chris

        Comment

        • Masta

          #5
          Re: Copy Files

          Thanks Chris. Very useful your post.

          Comment

          Working...