private static string GetBytes(RobocopyProcess process, RobocopySummaryColumn column) { string rawValue = process.GetSummary(RobocopySummaryRow.Bytes, column); string separator = (rawValue.Contains(" ") ? string.Empty : " "); return(string.Format("{0}{1}bytes", rawValue, separator)); }
/// <summary> /// Tries to parse a field of the Robocopy summary output. /// Returns "NaN" on error. /// </summary> public string GetSummary(RobocopySummaryRow row, RobocopySummaryColumn column) { const string defaultValue = "NaN"; int baseRowIndex = OutputSummaryLineIndex; if (baseRowIndex < 0) { return(defaultValue); } int rowIndex = baseRowIndex + (int)row; int colIndex = (int)column; try { string rawValue = Output[rowIndex].Substring(colIndex * 10, 10).Trim(); // try to parse it as integer; on success enforce culture-specific group separators int integer; if (int.TryParse(rawValue, out integer) && integer.ToString() == rawValue) { return(integer.ToString("n0")); } return(rawValue); } catch { return(defaultValue); } }