После пересмотра Железного человека задался вопросом, а как заставить программу саму себя скопировать куда - либо (в другое место). Задача стояла так - нужно либо ввести в консоль команду, либо нажать кнопку, чтобы программа выполнила копирование самой себя в другую папку. Вот в принципе 2 варианта решения этой задачи. Один вариант сделан на основы одной из программ, которую я уже выкладывал.
Вот первый (здесь нужно вставить названия папки, чтобы программа знала куда копироваться):
Вот первый (здесь нужно вставить названия папки, чтобы программа знала куда копироваться):
// Полный путь к программе. string currentAssembly = Assembly.GetExecutingAssembly().Location; // Название файла программы. string fileName = Path.GetFileName(currentAssembly); // Папка назначения. string destinationDirectory = Path.Combine(Directory.GetCurrentDirectory(), "copy"); // Проверяем, есть ли директория, если нет - создаём. if (!Directory.Exists(destinationDirectory)) Directory.CreateDirectory(destinationDirectory); // Копируем в заданную папку, перезаписывая, при необходимости. File.Copy(currentAssembly, Path.Combine(destinationDirectory, fileName), true); Console.WriteLine("Скопировано."); Console.ReadKey();
Вот второй:
static void Main(string[] args) { Console.WriteLine("введите команду"); string command = Console.ReadLine(); if(command == "копируй себя") { CopyFolder(@"D:\Working\project\Новая папка\copiesItselfTo", @"d:\__autoSeo_results\copiesItselfTo"); Console.WriteLine("Копирование завершено"); } Console.ReadLine(); } static public void CopyFolder(string sourceFolder, string destFolder) { // Directory.Exists - Определяет, указывает ли заданный путь на существующий каталог на диске if (!Directory.Exists(destFolder)) Directory.CreateDirectory(destFolder); string[] files = Directory.GetFiles(sourceFolder); //Directory.GetFiles - Возвращает имена файлов (с указанием пути к ним) в указанном каталоге foreach (string file in files) { string name = Path.GetFileName(file); string dest = Path.Combine(destFolder, name); File.Copy(file, dest); } string[] folders = Directory.GetDirectories(sourceFolder); foreach (string folder in folders) { string name = Path.GetFileName(folder); string dest = Path.Combine(destFolder, name); CopyFolder(folder, dest); } }
Комментариев нет:
Отправить комментарий