Click here to Skip to main content
15,893,381 members
Please Sign up or sign in to vote.
0.00/5 (No votes)
See more:
Hi I am trying to get the number of files copied value from a logfile produce by a RoboCopy method within my application. The logfile is always in this format:

-------------------------------------------------------------------------------
ROBOCOPY :: Robust File Copy for Windows :: Version XP010
-------------------------------------------------------------------------------

Started : Thu Oct 10 10:08:51 2013

Source : \\ad\nas\Dev_Code\ITA\Stats\11.6.4.15\CFI\Build\
Dest : C:\inetpub\CFI\

Files : *.*

Options : *.* /FFT /NFL /TEE /S /E /COPY:DAT /Z /IS /R:5 /W:5

------------------------------------------------------------------------------

1 \\ad\nas\Dev_Code\ITA\Stats\11.6.4.15\CFI\Build\

------------------------------------------------------------------------------

Total Copied Skipped Mismatch FAILED Extras
Dirs : 1 0 1 0 0 0
Files : 1 1 0 0 0 0
Bytes : 1.62 m 1.62 m 0 0 0 0
Times : 0:00:03 0:00:02 0:00:00 0:00:00

Speed : 607364 Bytes/sec.
Speed : 34.753 MegaBytes/min.

Ended : Thu Oct 10 10:08:59 2013


So far I am able to read the file into a streamreader but is there anything I can do to ensure I am always selecting the last instance of Files : and then the value under the Total column i.e. 1. Below I am trying to split the string based on it being tab delimited but this is returning System.String[]

C#
try
{
// Open file for reading.
using (StreamReader r = new StreamReader(@"C:\LogFile.log"))
{
    // 2.
    // Read each line until EOF.
    string line;
    while ((line = r.ReadLine()) != null)
    {
        // 3.
        // Do stuff with line.
        if (line.Contains("Files"))
        {
            String content = line.ToString();
            char sep = '\t';
            string[] splitContent = content.Split(sep);
            Console.WriteLine(splitContent);
        }
    }
}
}
catch (Exception)
{

throw;
}
Posted

here's my full working example:
C#
static void Main()
        {
            try
            {              
                // Open file for reading.
                using (StreamReader r = new StreamReader(@"C:\LogFile.log"))
                {
                    // 2.
                    // Read each line until EOF.
                    string line;
                    while ((line = r.ReadLine()) != null)
                    {
                        // 3.
                        // Do stuff with line.
                        if (line.Contains("Files"))
                        {
                            if (!line.Contains("Files : *.*"))
                            {
                                String content = line.ToString();

                                string[] splitContent = System.Text.RegularExpressions.Regex.Replace(content, @"\s+", " ").Split(' ');

                                //foreach (string s in splitContent)
                                //Console.WriteLine(s);
                                Console.WriteLine(splitContent[3]);
                            }                           
                        }                        
                    }
                }
            }
            catch (Exception ex)
            {
                Console.WriteLine(ex.Message);
            }
        }
 
Share this answer
 
If \t doesn't work, could it be there are spaces? Try this:




C#
splitcontent = System.Text.RegularExpressions.Regex.Replace(content, @"\s+"," ").Split(' ');


It replaces all spaces with a single one and then splits the string
 
Share this answer
 
Comments
pmcm 17-Oct-13 8:41am    
Thank you for your help!
Output your array of strings like this:
C#
foreach (string s in splitContent)
  Console.WriteLine(s)
 
Share this answer
 
Comments
pmcm 17-Oct-13 6:58am    
just tested this and I don't believe my code is creating an array based on content.Split(sep); because during debugging whenever I verify splitContent I have 1 string =
[0] = " Files : 1 1 0 0 0 0"

Any idea how I should best split this line to pull the 1st value after " Files :"??

This content, along with any associated source code and files, is licensed under The Code Project Open License (CPOL)



CodeProject, 20 Bay Street, 11th Floor Toronto, Ontario, Canada M5J 2N8 +1 (416) 849-8900