예제 #1
0
 static void CPCommand(List <string> arguments)
 {
     if (arguments.Count == 0)
     {
         ConsoleDrawings.PrintError("Неверные параметры...");
         return;
     }
     else if (arguments.Count == 1)
     {
         if (arguments[0].Trim() == "/?")
         {
             ConsoleDrawings.PrintInformation("cp <путь - откуда копируем> <путь куда копируем> - копирование файла/каталога");
         }
         else
         {
             ConsoleDrawings.PrintError("Неправильный вызов команды cp");
         }
     }
     else if (arguments.Count == 2)
     {
         string source = arguments[0];
         string dest   = arguments[1];
         if (source.Trim() == dest.Trim())
         {
             ConsoleDrawings.PrintError("Нельзя скопировать файл/папку саму в себя");
         }
         else if (source.Trim() == "" || dest.Trim() == "")
         {
             ConsoleDrawings.PrintError("Неверные аргументы");
         }
         else
         {
             Copy(source, dest);
         }
     }
     else
     {
         string resSourcePath    = arguments[0];
         string resDestPath      = "";
         int    indexOfStartDest = 0;//индекс начала второго параметра
         for (int i = 1; i < arguments.Count; i++)
         {
             resSourcePath += " ";
             if (arguments[i].Length > 1)
             {
                 if (arguments[i].Substring(1, 1) != ":")
                 {
                     resSourcePath += arguments[i];
                 }
                 else
                 {
                     indexOfStartDest = i;
                     break;
                 }
             }
             else
             {
                 resSourcePath += arguments[i];
             }
         }
         resSourcePath = resSourcePath.Trim();
         for (int i = indexOfStartDest; i < arguments.Count; i++)
         {
             resDestPath += arguments[i];
             resDestPath += " ";
         }
         resDestPath = resDestPath.Trim();
         Copy(resSourcePath, resDestPath);
     }
 }
예제 #2
0
        static void LSCommand(List <string> arguments)
        {
            int pageNum;

            if (arguments.Count == 0)
            {
                ConsoleDrawings.PrintError("Неверные параметры...");
                return;
            }
            else if (arguments.Count == 1)
            {
                if (arguments[0] == "/?")
                {
                    ConsoleDrawings.PrintInformation("ls <путь> <номер страницы> - команда выводит дерево указанного каталога с указанным номером страницы");
                }
                else if (arguments[0] == "..")
                {
                    DirectoryInfo parentDirectory = Directory.GetParent(CurrentPath);
                    if (parentDirectory == null)
                    {
                        ConsoleDrawings.PrintWarning("Не существует родительской директории для указанного каталога");
                    }
                    else
                    {
                        CurrentPath = parentDirectory.FullName;
                        ConsoleDrawings.PrintFoldersTree(CurrentPath, CurrentFoldersFiles, 1);
                    }
                }
                else //if(Directory.Exists(arguments[0]))//если не указан номер страницы, выводим первую
                {
                    CurrentPath = arguments[0];
                    ConsoleDrawings.PrintFoldersTree(CurrentPath, CurrentFoldersFiles, 1);
                }
            }
            else if (arguments.Count == 2)  //если два аргумента в команде, значит можно реализовать команду
            {
                CurrentPath = arguments[0]; //первый аргумент должен быть путь
                try
                {
                    pageNum = Convert.ToInt32(arguments[1]);
                }
                catch (FormatException)
                {
                    pageNum = 1;
                    ConsoleDrawings.PrintWarning("Некорректный аргумент <номер страницы> - выводим 1ю страницу...");
                }
                if (pageNum == 0)
                {
                    pageNum = 1;
                }
                ConsoleDrawings.PrintFoldersTree(CurrentPath, CurrentFoldersFiles, pageNum);
            }
            else//если аргументов более 2х, возможно путь разделен пробелами
            {
                //пытаемся собрать путь, предположив, что он разделен пробелами
                string resPath = "";
                for (int i = 0; i < arguments.Count - 1; i++)
                {
                    resPath += arguments[i];
                    resPath += " ";
                }
                resPath = resPath.Trim();
                try
                {
                    pageNum = Convert.ToInt32(arguments[arguments.Count - 1]);
                }
                catch (FormatException)
                {
                    resPath += " ";
                    resPath += arguments[arguments.Count - 1];
                    pageNum  = 1;
                }
                CurrentPath = resPath;
                ConsoleDrawings.PrintFoldersTree(CurrentPath, CurrentFoldersFiles, pageNum);
                //ConsoleDrawings.PrintError("Невозможно распознать команду, - аргументов более 2х");
            }
        }