Форум программистов, компьютерный форум, киберфорум
C/C++: WinAPI
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.57/7: Рейтинг темы: голосов - 7, средняя оценка - 4.57
 Аватар для young_developer
8 / 8 / 0
Регистрация: 12.12.2012
Сообщений: 62

Записать название всех файлов что скопировались на флешку?

12.12.2012, 02:25. Показов 1362. Ответов 2
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Как можно реализировать сохранение имен фалов что были скопированы на флешку?Есть ли такие функции?
0
Лучшие ответы (1)
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
12.12.2012, 02:25
Ответы с готовыми решениями:

Сбор файлов по маскам со всех дисков и их архивирование в exe-файл на флешку
Золотые вы мои друзя. Пытаюсь реализовать бат файл с таким набором. Сбор файлов на всех дисках по маскам и архивирование в exe файл на...

Флешку невозможно отформатировать и записать что-либо на нее.
В общем не знаю что случилось. Вчера копировал на неё 50 мб, скорость было примерно 3-4 мб в минуту. Часто пользуюсь, думаю пора...

Записать название файлов в массив и произвести поиск
Как записать название файлов лежащих в определенной папке в массив и произвести поиск на совпадение со строкой?

2
быдлокодер
 Аватар для kravam
1724 / 911 / 106
Регистрация: 04.06.2008
Сообщений: 5,705
12.12.2012, 02:30
Лучший ответ Сообщение было отмечено young_developer как решение

Решение

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
//Код не мой, а некоего Юры, я его шлифанул
#include <windows.h>
#include <stdio.h>
 
long int rez= 0;
 
void GetFileList(LPTSTR sPath);
 
int main(){
 
//Поскольку sPath и sExt и sEXT одинаковы во всех вызовах GetFileList, их можно было бы сделать
//глобальными, но я так оставил. 
//        char sPath[MAX_PATH]= "E:\\Microsoft_Visual_Studio_9.0";
        char sPath[MAX_PATH]= "F:";
//        char sPath[MAX_PATH]= "E:\\vso_moio";
//        char sPath[MAX_PATH]= "C:\\vso_moio";
//        char sPath[MAX_PATH]= "C:\\vso_moio";
 
//Обратить  внимание на размер массива!
        GetFileList(sPath);
      printf("rez= %d\n", rez);
 
//Портит всё дело: Если перенаправлять в файл с консоли, то полуачается, что в консол ведут 
//запись два разных потока- тот,который нужент и этот,который записывает "Для продлжения нажмите любую
//клавишу" и эта надпись вклинивается в серёдку и портит всё дело
  //system ("PAUSE");
}
 
void GetFileList(LPTSTR sPath) {
 
 WIN32_FIND_DATA pFILEDATA;
 
 HANDLE hFile = FindFirstFile(strcat(sPath,"\\*"),&pFILEDATA);
 
//!!!!!!!!!!!!!!!!!!!!!!!!!!!!Необходимо именно здесь прописывать длину пути!!!!!!!!!!!!!!!!!!!!!!!
// sPath[strlen(sPath) - strlen(strstr(sPath,"*"))] = '\0';
//Если пропишем после if (как предлагает Юра), то тогда, если вдруг натыкаемся на системную директорию
// или файл, то FindFirstFile возвращает -1. Следовательно, всё, что выплнняется по условию
//(hFile!=INVALID_HANDLE_VALUE) не выолнится и в частности, не будет поставлен конец строки!
//А это значит, что по выходу из  рекурсивной функции GetFileList в том месте, где мы восстанавливаем
//Длину, она будет восстановлена неправильно
 
//22.11.12 00:02
//Да и вообще нахрен оно надо, лучше так записать:
//по-любому звёздочка есть в строке, мы же делали конкантекацию строк выше!     
 *(strstr(sPath,"*"))= '\0';
 
 
 
 if (hFile!=INVALID_HANDLE_VALUE)    {
  char * chBuf;
  //sPath[strlen(sPath) - strlen(strstr(sPath,"*.*"))] = '\0';
  do {
   //Пропускаем . и ..
   if (strlen(pFILEDATA.cFileName) == 1 &&  strchr(pFILEDATA.cFileName,'.') !=NULL)
    if (FindNextFile(hFile,&pFILEDATA) == 0)
      break;
   if (strlen(pFILEDATA.cFileName) == 2 && strstr(pFILEDATA.cFileName,"..") !=NULL)
    if(FindNextFile(hFile,&pFILEDATA) == 0)
      break;
     //Если нашли директорию, запускаем поиск в ней рекурсивный поиск
   if(pFILEDATA.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY) {
     GetFileList(strcat(sPath,pFILEDATA.cFileName));
 
//!!!!!!!!!!!!!!!!!!!!!!!!!!!!!оБЯЗАТЕЛЬН востанавливать дллину пути................................     
     sPath[strlen(sPath) - strlen(pFILEDATA.cFileName)- 1] = '\0';
   }
   else {
    //Проверяем на соотвествие sExt расширения pFILEDATA.cFileName
//    if((chBuf = strrchr(pFILEDATA.cFileName,'.'))) {
//     if((!strcmp(chBuf + 1,sExt))|| (!strcmp(chBuf + 1,sEXT))) {
      //Если не будем использовать CharToOem() то на экране русский шрифт каракулями выйдет
      CharToOem(sPath,sPath);
      printf("%s",sPath);
      OemToChar(sPath,sPath);
      CharToOem(pFILEDATA.cFileName,pFILEDATA.cFileName);
      printf("%s\n",pFILEDATA.cFileName);
      rez++;
//     }
//    }
   }
  }
  while (FindNextFile(hFile,&pFILEDATA));
  FindClose (hFile);
 }
}
0
 Аватар для young_developer
8 / 8 / 0
Регистрация: 12.12.2012
Сообщений: 62
12.12.2012, 03:06  [ТС]
Большое спасибо!Ну а вот если я хочу узнать какие файлы были скопированы после того как флешка была вставлена.Файлы на ней уже были и добавились новые.Я думаю надо сохранить результат при подключении и сравнить как то с файлами перед откл. или через промежуток времени.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
12.12.2012, 03:06
Помогаю со студенческими работами здесь

Как из папки Записать в массив название файлов ?
Как из папки Записать в массив название файлов ?

Считывание всех файлов из папки и присвоение переменной их название
У меня есть путь к папке, например: string put = @&quot;C:\papka&quot;; Мне нужно, чтобы с помощью foreach считывалась название файла и...

Возможно ли вывести в ListBox название всех файлов по заданному пути
Уважаемые программисты, прошу помочь! Возможно ли вывести на ListBox название всех файлов при задание пути. И при нажатие какого-нибудь...

При попытке записать что либо на флешку от телефона micro sd, мне ultra ISO выдает ошибку
Добрый день всем.Проблема заключается в следующем, при попытке записать что либо на флешку от телефона micro sd, мне ultra ISO выдает...

Как вывести название всех файлов имеющих одинаковую первую букву?
Здравствуйте. Помогите пожалуйста с задачкой: Нужно вывести название всех файлов в каталоге, имеющих одинаковую первую букву. Буква и...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
Новые блоги и статьи
Переходник USB-CAN-GPIO
Eddy_Em 20.03.2026
Достаточно давно на работе возникла необходимость в переходнике CAN-USB с гальваноразвязкой, оный и был разработан. Однако, все меня терзала совесть, что аж 48-ногий МК используется так тупо: просто. . .
Оттенки серого
Argus19 18.03.2026
Оттенки серого Нашёл в интернете 3 прекрасных модуля: Модуль класса открытия диалога открытия/ сохранения файла на Win32 API; Модуль класса быстрого перекодирования цветного изображения в оттенки. . .
SDL3 для Desktop (MinGW): Рисуем цветные прямоугольники с помощью рисовальщика SDL3 на Си и C++
8Observer8 17.03.2026
Содержание блога Финальные проекты на Си и на C++: finish-rectangles-sdl3-c. zip finish-rectangles-sdl3-cpp. zip
Символические и жёсткие ссылки в Linux.
algri14 15.03.2026
Существует два типа ссылок — символические и жёсткие. Ссылка в Linux — это запись в каталоге, которая может указывать либо на inode «файла-ИСТОЧНИКА», тогда это будет «жёсткая ссылка» (hard link),. . .
[Owen Logic] Поддержание уровня воды в резервуаре количеством включённых насосов: моделирование и выбор регулятора
ФедосеевПавел 14.03.2026
Поддержание уровня воды в резервуаре количеством включённых насосов: моделирование и выбор регулятора ВВЕДЕНИЕ Выполняя задание на управление насосной группой заполнения резервуара,. . .
делаю науч статью по влиянию грибов на сукцессию
anaschu 13.03.2026
прикрепляю статью
SDL3 для Desktop (MinGW): Создаём пустое окно с нуля для 2D-графики на SDL3, Си и C++
8Observer8 10.03.2026
Содержание блога Финальные проекты на Си и на C++: hello-sdl3-c. zip hello-sdl3-cpp. zip Результат:
Установка CMake и MinGW 13.1 для сборки С и C++ приложений из консоли и из Qt Creator в EXE
8Observer8 10.03.2026
Содержание блога MinGW - это коллекция инструментов для сборки приложений в EXE. CMake - это система сборки приложений. Здесь описаны базовые шаги для старта программирования с помощью CMake и. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru