Как стать автором
Обновить

200 Флешек или Как избавиться от однодневной рутины — Си для начинающих

Хочу Вам рассказать, как я, будучи начинающим в языке программирования C, да и вообще в программировании, справился с задачей форматирования, переименования 200 флешек и загрузки на них информации для потенциальных клиентов нашей компании, которые будут раздаваться на выставке в Берлине.

Как только я себе представил, сколько будет длиться, обработка 200 флешек в ручную, начал искать любые пути, для прибавления эффективности сему процессу.
Для сохранения моего USB-Port'a, приобрёл активный USB-Hub на 7 портов в eBay.

А далее, имея небольшие знания яз. прогр. C, пытался соорудить что-то, что автоматически сделает за меня работу, заставляя меня, лишь сменить 7 флешек в хабе и нажать клавишу клавиатуры для продолжения операции «Флешка».

Гугл как всегда меня спас, ибо кроме «format (буква):», я не знал, как мне решить данную задачу. Благодаря данной страничке разобрался как отформатировать диск, и задать метку тома. Благо, хоть как копировать файлы, знал.

Открываем редактор notepad++, CodeBlocks и т.д., и начинаем Программировать, что-то более или менее похожее на решение моей задачи.
//a для контроля, если происходит ошибка (к пр. нету диска), получаем a = 1 
a = system("format g: /q /v:Name"); //Форматируем Диск G; /q – для быстрого форматирования; /v – задаём метку тому 

Проверяем — ура! Работает!

Пробуем копировать нужный нам файл, при этом ещё и переименовать его:
//b для контроля, если происходит ошибка (к пр. неправильное имя файла), получаем b = 1 
b = system("copy DSCI0198.jpg g:image.jpg"); //копируем файл с именем DSCI0198.jpg на съёмный диск G под именем image.jpg

Проверяем… работает: прекрасно!

Ну а дальше, дело техники, добавляем удобств:
7 портов, а значит за раз максимально 7 флешек. Изначально проверяем, идут ли буквы съёмных дисков по алфавиту, и от какой буквы.
-Задаём команды с наличием 7 наименований дисков
//форматирование
char * fcommand[7] = {"format f: /q /v:Name /y > nul", 
                     "format g: /q /v:Name /y > nul",
                     "format h: /q /v:Name /y > nul",
                     "format i: /q /v:Name /y > nul",
                     "format j: /q /v:Name /y > nul",
                     "format k: /q /v:Name /y > nul",
                     "format l: /q /v:Name /y > nul"};
//копирование файла
char * ccommand[7] = {"copy DSCI0198.jpg f:image.jpg",
                      "copy DSCI0198.jpg g:image.jpg",
                      "copy DSCI0198.jpg h:image.jpg",
                      "copy DSCI0198.jpg i:image.jpg",
                      "copy DSCI0198.jpg j:image.jpg",
                      "copy DSCI0198.jpg k:image.jpg",
                      "copy DSCI0198.jpg l:image.jpg"}

-Спрашиваем себя, готовы ли мы перейти к решению задачи (стоят ли флешки)
    	
repeat = askAgain(); //repeat получит от askAgain, после ответа (y – да, n – нет) на вопрос  1 — да, готов; или 0 — нет, не готов, закончить программу!

-Проверяем ответ, и начинаем стирать данные с флешек
  
a = system(command[i]); // отправляем команду на формат диска f, g...

                if (a) //a получила от system 1 или больше? 
                {
                    printf("\n---ERROR: Всё плохо! Наверное диск, в списке под номером: %i не найден\n", i);
                }
                else 
                {
                    printf("+++Диск под номером %i был успешно отформатирован+++\n", i);

                    b = system(сcommand[i]); //копируем фотографию на флешку
                    if (b)
                        printf("\n---ERROR: И опять всё плохо\n\n");
                    if (!b)
                        printf("+++Копирование завершено+++\n");
                    else
                        printf("---FILE-ERROR");
                }

                i++; // переходим на след. Диск


После обработки 7 флешек, незабываем их извлечь, с помощью данного скрипта
 
system("removedrive f: -l"); // так для каждого диска


Ну вот и всё! На написание программы понадобилось пару часов, получил кучу удовольствия от программирования и решения поставленной задачи, облегчил себе жизнь на этой недели, попрактиковался в Си, ну и ещё много всякого позитива.
Надеюсь, что данная статья поможет кому, а если нет, не будет скучна для чтения.

Исходный код, можно скачать здесь.

Строго не судите, это мой первый пост и я ещё учусь.
Предложения по улучшению программы — приветствуются.
Поправки правописания — в личку.
Теги:
Хабы:
Данная статья не подлежит комментированию, поскольку её автор ещё не является полноправным участником сообщества. Вы сможете связаться с автором только после того, как он получит приглашение от кого-либо из участников сообщества. До этого момента его username будет скрыт псевдонимом.