private static void Try(FileSystemInfo source, GetNewPathDelegate destPathGetter, FileSystemAction action) { var destPath = destPathGetter(source); if (File.Exists(destPath) || Directory.Exists(destPath)) { Console.WriteLine("{0} already exists, skipping", destPath); return; } Console.WriteLine("{0} => {1}", source, destPath); try { action(source.FullName, destPath); } catch (Exception e) { Console.Error.WriteLine(e); } }