public static void GetMissingDirectories(string masterfile_path, string doTransit) { MigrationSettigs d = Init(doTransit, ""); LogCsvFile log = new LogCsvFile("Directory, Exists", "missing_directories"); string[] lines = System.IO.File.ReadAllLines(masterfile_path); foreach (string id in lines) { try { string folderPath = string.Format(d.SearchPattern, id); if (Directory.Exists(folderPath)) { log.WriteToCVS(folderPath, "TRUE"); } else { log.WriteToCVS(string.Format(d.SearchPattern, id), "FALSE"); } } catch (Exception ex) { log.WriteToCVS(string.Format(d.SearchPattern, id), "ERROR"); log.WriteError(id); log.WriteError(ex.Message); } } }
public static void ConvertXlsToXlsxFromFileList(string textfilewithids, string doTransit, string from_lastdate, string report_path) { ExcelObj.Application excelApp = null; LogCsvFile log = new LogCsvFile("parent, file, comments", report_path); MigrationSettigs d = FileManager.Init(doTransit, from_lastdate); try { string[] lines = System.IO.File.ReadAllLines(textfilewithids); string startedAt = DateTime.Now.ToString(); long count = 1; log.WriteInfo("[opening master file]"); log.WriteInfo(string.Format("[{0} records found]", lines.Length.ToString())); excelApp = new ExcelObj.Application(); excelApp.AutomationSecurity = Microsoft.Office.Core.MsoAutomationSecurity.msoAutomationSecurityForceDisable; excelApp.AskToUpdateLinks = false; excelApp.DisplayAlerts = false; excelApp.Visible = false; foreach (string idpair in lines) { string[] values = idpair.Split(new char[] { ',' }); string id = values[0]; string folder = string.Format(d.SearchPattern, id); string parentFolder = folder.Substring(folder.LastIndexOf("\\") + 1); log.WriteInfo("[processing]: " + parentFolder); log.WriteInfo(string.Format("[processing]: {0}/{1}", count.ToString(), lines.Length.ToString())); NewExcelInstance(excelApp, parentFolder, folder, 0, d, log); count++; } log.WriteInfo("[Started at]: " + startedAt); log.WriteInfo("[Finished at]: " + DateTime.Now.ToString()); } catch (Exception ex) { log.WriteError(ex.Message); } finally { try { excelApp.Quit(); GC.Collect(); GC.WaitForPendingFinalizers(); } catch (Exception e) { log.WriteError(e.Message); } } }
static string[] TryGetSubDirs(string sourceDir, LogCsvFile log) { try { return(Directory.GetDirectories(sourceDir)); } catch (Exception ex) { log.WriteError(sourceDir); log.WriteError(ex.Message); return(new string[] { }); } }
public static void ListXlsPwd(string textfilewithids, string doTransit, string from_lastdate, string report_path) { ExcelObj.Application excelApp = null; LogCsvFile log = new LogCsvFile("parent,file,owner", report_path); MigrationSettigs d = FileManager.Init(doTransit, from_lastdate); try { string[] lines = System.IO.File.ReadAllLines(textfilewithids); string startedAt = DateTime.Now.ToString(); //excelApp = new ExcelObj.Application(); //excelApp.AutomationSecurity = Microsoft.Office.Core.MsoAutomationSecurity.msoAutomationSecurityForceDisable; //excelApp.AskToUpdateLinks = false; //excelApp.DisplayAlerts = false; //excelApp.Visible = false; foreach (string idpair in lines) { string[] values = idpair.Split(new char[] { ',' }); string id = values[0]; string folder = string.Format(d.SearchPattern, id); string parentFolder = folder.Substring(folder.LastIndexOf("\\") + 1); NewExcelInstance(excelApp, parentFolder, folder, 1, d, log); } log.WriteInfo("[Started]: " + startedAt); log.WriteInfo("[Finished]: " + DateTime.Now.ToString()); } catch (Exception ex) { log.WriteError(ex.Message); } finally { try { //excelApp.Quit(); //GC.Collect(); //GC.WaitForPendingFinalizers(); } catch (Exception e) { log.WriteError(e.Message); } } }
public static void ProcessFileInfo(string parent, string x, MigrationSettigs d, LogCsvFile log) { try { string i = "blank"; string end_part = x.Substring(x.LastIndexOf("\\")); if (end_part.LastIndexOf(".") != -1) { i = end_part.Substring(end_part.LastIndexOf(".")); } if (x.Length < 260) { FileInfo f = new FileInfo(x); if (d.DoIncremental) { if (f.LastWriteTime < DateTime.Parse(d.LastDate)) { log.WriteWarning("[excluded]: " + x); return; } } log.WriteToCVS(parent, x, i, f.Length.ToString(), LogManager.GetFileOwner(x), f.LastWriteTime.ToShortDateString()); } else { log.WriteWarning("[invalid_length]: " + x); } } catch (Exception ex) { log.WriteError("[" + x + "]:" + ex.Message); } }
static void GetDirecotrySizeFromTextFileList(string textfilewithids, MigrationSettigs d, LogCsvFile log) { long count = 1; log.WriteInfo("[opening file]"); string[] lines = System.IO.File.ReadAllLines(textfilewithids); log.WriteInfo(string.Format("[{0} records found]", lines.Length.ToString())); string folder = string.Empty; foreach (string idpair in lines) { try { string[] values = idpair.Split(new char[] { ',' }); string id = values[0]; log.WriteInfo(string.Format("[processing {0}/{1}]", count.ToString(), lines.Length.ToString())); folder = string.Format(d.SearchPattern, id); long size = DirSize(folder, true, d, log); log.WriteToCVS(folder, size.ToString()); log.WriteInfo("[done]"); } catch (Exception ex) { log.WriteToCVS(folder, "error"); log.WriteError("[" + folder + "]: " + ex.Message); } finally { count++; } } }
public static void CheckInvalidFolders(string masterfile_path, string doTransit, string report_name) { MigrationSettigs d = Init(doTransit, ""); LogCsvFile log = new LogCsvFile("Folder, Name", report_name); string[] excludedFolders = d.ExcludeFolders.Split(','); string[] lines = System.IO.File.ReadAllLines(masterfile_path); foreach (string idpair in lines) { string[] values = idpair.Split(new char[] { ',' }); string id = values[0]; try { string folderPath = string.Format(d.SearchPattern, id); string parent = folderPath.Substring(folderPath.LastIndexOf("\\") + 1); foreach (string folder in Directory.GetDirectories(folderPath, "*", SearchOption.AllDirectories)) { DirectoryInfo dir = new DirectoryInfo(folder); var found = from f in excludedFolders where f.Equals(dir.Name, StringComparison.CurrentCultureIgnoreCase) select f; if (found.Count() > 0) { log.WriteToCVS(parent, folder); } } } catch (Exception ex) { log.WriteError(id); log.WriteError(ex.Message); } } }
private void RunJobAsPs(string jobpath) { Runspace runspace = null; try { runspace = RunspaceFactory.CreateRunspace(); runspace.Open(); using (PowerShell ps = PowerShell.Create()) { ps.Runspace = runspace; ps.AddScript(System.IO.File.ReadAllText(jobpath)); ps.InvocationStateChanged += Ps_InvocationStateChanged; ps.Invoke(); WriteJobErrors(ps); } } catch (Exception ex) { log.WriteError(ex.Message); } }
private static string CheckFileForPassword(ExcelObj.Application excelApp, string parentFolderPath, string inputFile, MigrationSettigs d, LogCsvFile log) { var missing = System.Reflection.Missing.Value; string fname = inputFile.Substring(inputFile.LastIndexOf("\\") + 1); string status = Constants.NotProcessed; ExcelObj.Workbook excelWrkBk = null; try { //Console.WriteLine("[processing]: " + fname); //excelWrkBk = excelApp.Workbooks.Open( // inputFile, // 0, // true, // missing, // "124567890", // missing, // missing, // missing, // missing, // missing, // missing, // missing, // missing, // missing, // missing); if (OfficePasswordHelper.IsPasswordProtected(inputFile)) { Console.WriteLine("password protected file found..."); log.WriteToCVS(parentFolderPath, inputFile, LogManager.GetFileOwner(inputFile)); status = Constants.PasswordFound; } else { status = Constants.NotProcessed; } } catch (Exception ex) { if (ex.HResult == -2146827284) { Console.WriteLine("password protected file found..."); log.WriteToCVS(parentFolderPath, inputFile, LogManager.GetFileOwner(inputFile)); status = Constants.PasswordFound; } else { log.WriteError(inputFile); log.WriteError(ex.Message); } } finally { try { if (excelWrkBk != null) { excelWrkBk.Close(false, missing, missing); } } catch (Exception e) { log.WriteError(inputFile); log.WriteError(e.Message); } } return(status); }
private static void NewExcelInstance(ExcelObj.Application excelApp, string parentFolderPath, string path, int operation, MigrationSettigs d, LogCsvFile log) { long count = 0; long filesWithPwdCount = 0; long filesConvertedCount = 0; long fileAlreadyConverted = 0; long filesNotProcessed = 0; bool doIncremental = false; DateTime from_date = DateTime.MinValue; try { log.WriteInfo("[processing]: " + parentFolderPath + " (" + DateTime.Now.ToString() + ")"); var files = Directory.EnumerateFiles(path, "*.xl*", SearchOption.AllDirectories).Where(x => x.Length < 260); if (d.DoIncremental) { from_date = DateTime.Parse(d.LastDate); } string status = Constants.NotProcessed; foreach (string x in files) { if (x.Substring(x.LastIndexOf(".")).ToLower() == ".xls" || x.Substring(x.LastIndexOf(".")).ToLower() == ".xlt") { if (doIncremental) { FileInfo file = new FileInfo(x); if (file.LastWriteTime < from_date) { continue; } } count++; if (operation == 0) { status = ConvertFile(excelApp, parentFolderPath, x, d, log); } else if (operation == 1) { status = CheckFileForPassword(excelApp, parentFolderPath, x, d, log); } switch (status) { case Constants.NotProcessed: filesNotProcessed++; break; case Constants.Converted: filesConvertedCount++; break; case Constants.PasswordFound: filesWithPwdCount++; break; case Constants.AlreadyConverted: fileAlreadyConverted++; break; default: filesNotProcessed++; break; } } } log.WriteInfo("[finished]: " + parentFolderPath + " (" + DateTime.Now.ToString() + ")"); } catch (Exception ex) { log.WriteError(ex.Message); Console.WriteLine(ex.ToString()); } finally { log.WriteInfo("[Total xls files found]: " + count.ToString()); log.WriteInfo("[Total files converted]: " + filesConvertedCount.ToString()); log.WriteInfo("[Total files with passwords]: " + filesWithPwdCount.ToString()); log.WriteInfo("[Total files already converted]: " + fileAlreadyConverted.ToString()); if (operation == 0) { log.WriteInfo("[Total files with errors]: " + filesNotProcessed.ToString()); } else { log.WriteInfo("[Total files w/o passwords]: " + filesNotProcessed.ToString()); } } }
private static string ConvertFile(ExcelObj.Application excelApp, string parentFolderPath, string inputFile, MigrationSettigs d, LogCsvFile log) { var xlsxNewFile = string.Empty; string fname = inputFile.Substring(inputFile.LastIndexOf("\\") + 1); string status = Constants.NotProcessed; FileInfo i = new FileInfo(inputFile); ExcelObj.Workbook excelWrkBk = null; try { Console.WriteLine("processing: " + fname); if (FileHasBeenConverted(i) && string.IsNullOrEmpty(d.LastDate)) { return(Constants.AlreadyConverted); } excelWrkBk = excelApp.Workbooks.Open( inputFile, 0, Type.Missing, Type.Missing, "1234567890", Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing); ExcelObj.XlFileFormat format = Microsoft.Office.Interop.Excel.XlFileFormat.xlOpenXMLWorkbook; if (excelWrkBk.HasVBProject) { format = Microsoft.Office.Interop.Excel.XlFileFormat.xlOpenXMLWorkbookMacroEnabled; xlsxNewFile = inputFile.Replace(".xls", ".xlsm"); } else if (i.Extension == ".xls") { format = Microsoft.Office.Interop.Excel.XlFileFormat.xlOpenXMLWorkbook; xlsxNewFile = inputFile.Replace(".xls", ".xlsx"); } else if (i.Extension == ".xlt") { format = Microsoft.Office.Interop.Excel.XlFileFormat.xlOpenXMLWorkbook; xlsxNewFile = inputFile.Replace(".xlt", ""); xlsxNewFile = xlsxNewFile + "_template.xlsx"; } excelWrkBk.SaveAs(xlsxNewFile, format, Type.Missing, Type.Missing, Type.Missing, Type.Missing, ExcelObj.XlSaveAsAccessMode.xlNoChange, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing); status = Constants.Converted; log.WriteToCVS(parentFolderPath, inputFile, "converted"); } catch (Exception ex) { if (ex.HResult == -2146827284) { log.WriteInfo("password protected file found..."); log.WriteToCVS(parentFolderPath, inputFile, "password protected"); status = Constants.PasswordFound; } else { log.WriteToCVS(parentFolderPath, inputFile, "error"); status = Constants.NotProcessed; } log.WriteError(inputFile); log.WriteError(ex.Message); } finally { try { Console.WriteLine("closing: " + fname); if (excelWrkBk != null) { excelWrkBk.Close(false, Type.Missing, Type.Missing); } } catch (Exception e) { log.WriteError(inputFile); log.WriteError(e.Message); } } return(status); }