Files
OneDriveArchiver/OneDriveArchiver/Program.cs

98 lines
3.5 KiB
C#

#region Using Statements
using System;
using System.IO;
#endregion
namespace OneDriveArchiver
{
internal static class Program
{
private static void Main(string[] args)
{
const string appName = "OneDriverArchiver";
Console.WriteLine($"{appName} v.1.0");
Console.WriteLine("(c) 2020 JR IT Services");
if (args.Length < 1)
{
// handle improper arguments
Console.WriteLine(
$"{appName}: Please call me with {appName} sourceDirectory [optional]targetDirectory.");
}
else
{
if (string.IsNullOrEmpty(args[0]))
{
Console.WriteLine("Please specify a source directory.");
}
// check if the directory to process really exists
if (!Directory.Exists(args[0]))
{
Console.WriteLine($"{appName}: The source directory '{args[0]}' does not exist. Please specify an existing one.");
}
else
{
// normal processing...
Console.WriteLine($"{appName}: starting up...");
// set target path
string targetPath;
if (args.Length == 1)
{
targetPath = Path.GetFullPath(".");
}
else
{
targetPath = args[1];
}
var startUpTime = DateTime.Now;
var filesToProcess = Directory.GetFiles(args[0]);
if (filesToProcess.Length > 1)
{
foreach (var item in filesToProcess)
{
Console.WriteLine($"{appName}: Processing file {item}...");
// skip ourselves...
if (item.ToLower().Contains("onedrivearchiver"))
{
Console.WriteLine(
$"{appName}: Skipping processing of my own executable. Proceeding...");
continue;
}
// we do not archive desktop.ini either...
if (item.ToLower().Contains("desktop.ini"))
{
Console.WriteLine($"{appName}: skipping desktop.ini file...");
continue;
}
// archive the file
IoHelper.ArchiveOneDriveFile(appName, targetPath,item);
Console.WriteLine($"{appName}: Processing for file {item} completed successfully.");
}
}
else
{
// no files found...
Console.WriteLine($"{appName}: No files found to process.");
}
var endProcessingTime = DateTime.Now;
var processingTime = endProcessingTime - startUpTime;
Console.WriteLine(
$"{appName}: Processing completed.\n{appName}: Processing time = {processingTime}\n{appName}: Number of files = {filesToProcess.Length}.");
}
}
}
}
}