/// <summary> /// Extracts a given IPAC file into the output directory provided /// </summary> /// <param name="path">Path to IPAC</param> /// <param name="folder">Path to output the extracted IPAC</param> static void ExtractIPAC(string path, string folder) { if (!File.Exists(path)) { Console.WriteLine("{0} does not exist as a file, falling back to batch mode.", path); if (Directory.Exists(path)) { var ext = new List <string> { ".ipac", ".IPAC" }; var myFiles = Directory.GetFiles(path, "*.*", SearchOption.AllDirectories).Where(s => ext.Contains(Path.GetExtension(s))); foreach (string file in myFiles) { var currentChildDir = folder + "\\" + Path.GetDirectoryName(file.Replace(path, "")); string filename = Path.GetFileName(file); string dest = currentChildDir + "\\_" + filename + "_\\"; string dir = Path.GetDirectoryName(dest); if (!Directory.Exists(dir)) { Directory.CreateDirectory(dir); } try { IPAC ipac = new IPAC(file); if (ipac != null) { ipac.Unpack(dest); } if (bVerbose) { Console.WriteLine("Converted {0} to {1}", file, dest); } } catch (Exception e) { Console.WriteLine("Oops! {0} failed!\nException: {1}", path, e.ToString()); ++iNumFailedOperations; } ++iNumOperations; } } else { Console.WriteLine("{0} does not exist. Cancelling operation.", path); return; } } else { try { IPAC ipac = new IPAC(path); if (ipac != null) { ipac.Unpack(folder); } if (bVerbose) { Console.WriteLine("Converted {0} to {1}", path, folder); } } catch (Exception e) { Console.WriteLine("Oops! {0} failed!\nException: {1}", path, e.ToString()); ++iNumFailedOperations; } ++iNumOperations; } return; }