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); } }
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х"); } }