1183 / 468 / 87
Регистрация: 23.06.2009
Сообщений: 6,390
|
|
1 | |
Поиск с консоли30.09.2009, 21:42. Показов 10680. Ответов 42
Метки нет (Все метки)
вот решил прогу писать,которая ищет на компе все файлы с расширением doc,и все в них удаляет и добавляет звездочки...я только не знаю эту функцию поиска,помогите пожалуйста,надо найти все файлы,и записать их адреса в чар,чтобы потом пользовался с чаром как file_name, наверно понятно объяснилесли возможно то поболше комментарий,ведь с этой функцией в жизни не работалбуду благодарен
1
|
30.09.2009, 21:42 | |
Ответы с готовыми решениями:
42
Поиск символа на консоли Поиск данных из файла с консоли Поиск максимального числа в консоли Переделать из консоли в VCL Forms (поиск оптимальных путей от точки А до точки Б) |
Модератор
12453 / 7478 / 1752
Регистрация: 25.07.2009
Сообщений: 13,748
|
|
01.10.2009, 09:31 | 2 |
МедведЪ, На всякий случай
0
|
эволюционирую потихоньку
468 / 466 / 91
Регистрация: 30.06.2009
Сообщений: 1,401
|
|
01.10.2009, 09:40 | 3 |
в общем делай что думаешь и думай что делаешь !!!
0
|
Заблокирован
|
||||||
01.10.2009, 12:21 | 4 | |||||
Сообщение было отмечено как решение
Решение
Вот консольная програмка для поиска файла в директории по его расширению....
6
|
эволюционирую потихоньку
468 / 466 / 91
Регистрация: 30.06.2009
Сообщений: 1,401
|
|
01.10.2009, 12:32 | 5 |
Юоа, хорошая программа, сохраню для досконального изучения.про справочник не забыл, недавно говорили?
0
|
быдлокодер
1724 / 911 / 106
Регистрация: 04.06.2008
Сообщений: 5,679
|
||||||
08.11.2009, 22:41 | 11 | |||||
Взялся за анализ исходника. Там есть куда дорабатывать. Так, имеем допустим, директорию C:\proba, в которой, в свою очередь есть 5 (к примеру) директорий без файлов с расширением exe
Предположим также, что мы ищем файлы именно с таким расширением. Тогда вывод будет таким.
1
|
быдлокодер
1724 / 911 / 106
Регистрация: 04.06.2008
Сообщений: 5,679
|
||||||
09.11.2009, 02:38 | 12 | |||||
МедведЪ, ты просил. Упрощённый вариант проги -=ЮрА=-
Потом, я закомментил возврат короткого пути. В тексте я всё это пометил. Вроде остальное правильно. Тебе вопрос: скажи пожалуйста за константу FILE_ATTRIBUTE_DIRECTORY Какова её роль? Не могу понять. Спасибо. Добавлено через 1 минуту Да ещё. Кто будет использвать- о заголовочнх файлах и перетипизации данных заботьтесь сами, я такие мелочи даже не упоминал. Добавлено через 8 минут И второй вопрос Юра, ты располагаешь сведениями, в каком порядке ищутся файлы?
1
|
эволюционирую потихоньку
468 / 466 / 91
Регистрация: 30.06.2009
Сообщений: 1,401
|
|
09.11.2009, 09:06 | 13 |
хм, странно, я, конечно, не вникал особо, но Юра выкладывал уже этот код некоторое время назад, за что ему большое спасибо.
Я успешно воспользовался данным примером, сейчас полез и проверил ищет все файлы (сделал в коневой папке 3 папки и в каждой из этих трёх ещё по несколько и все файлы нашлись.) Там ведь рекурсивный вызов GetFileList.
1
|
быдлокодер
1724 / 911 / 106
Регистрация: 04.06.2008
Сообщений: 5,679
|
||||||||||||||||
09.11.2009, 12:15 | 14 | |||||||||||||||
Так искать-то, он, может, и ищет, а ты попробуй создать пустую папку C:\proba и в ней создай пять папки proba_1 proba_2 proba_3 proba_4 proba_5 и наполни их каким-нибудь содержимым- например, текстовыми файлами. Или оставь пустыми, это неважно.
А потом попробуй найди в папке C:\proba файлы, которых в ней заведомо нет и во вложенных папках тоже нет. И посмотри на вывод ...И это. Перед заходом в каждую директорию соответственно изменялся (увеличивался путь) директории
А восстанавливать его надо. Отнимать то есть имя директории, поиск в которой мы только что закончили. Так что вот. Добавлено через 12 минут И вывод выложи, если можно. Добавлено через 22 минуты Я те больше скажу- не поленись, помести в папку proba_5 файл *exe и попробуй его найди в папке C:\proba Не найдёт. Догадываешься, почему? Потому, что в проге не присутствует строки
1
|
эволюционирую потихоньку
468 / 466 / 91
Регистрация: 30.06.2009
Сообщений: 1,401
|
|
09.11.2009, 12:22 | 15 |
с выводом хуже, честно признаюсь не знаю как с консоли его содрать.
да и вывод там смешан с моей отладкой, но результат у меня такой: как вы, kravam, и говрили сделал кучу пустых вложенных папок запихал туда разное и искал чего нет соответсвенно ничего не нашёл. добавил фаил который попадает в условия по иска и нашел его. однако, наш диалог не принесёт результата, так как я уже не помню редактировал ли я Юрины исходники или нет и выдрать их из моего проекта возможноти и желания не имею. одно тока скажу что работает данный блок в моем проекте правильно, покрайней мере в данном частном случае. я тоже заинтересован в создании правильного кода поиска файлов. Юра ты где? разреши вопрос.
0
|
быдлокодер
1724 / 911 / 106
Регистрация: 04.06.2008
Сообщений: 5,679
|
|
09.11.2009, 12:36 | 16 |
Проще будет скомпилить НЕПОСРЕДСТВЕННО Юрину программу. Ошибка в ней. А не в другой проге.
Ну, или дождаться Юру, я ему уже написал.
1
|
быдлокодер
1724 / 911 / 106
Регистрация: 04.06.2008
Сообщений: 5,679
|
||||||
09.11.2009, 19:39 | 17 | |||||
МедведЪ, вот тебе ещё проще.
Вариант Юриной проги. Ничего вводить не надо. Забиваешь в исходник имя директории, расширение (обрати внимание на размер) и смотришь на вывод. Хочешь, звпускай из командной строки и перенаправляй в файл. Открыть надо в кодировке OEM (Она же MS DOS) В выводе увидишь исключительно имена файлов с полными путями. Всё! Ничего больше. Делай с ними, что хочешь.
2
|
быдлокодер
1724 / 911 / 106
Регистрация: 04.06.2008
Сообщений: 5,679
|
|||||||||||
11.11.2009, 07:38 | 18 | ||||||||||
Друзья!
Если кто пользуется вышеприведёнными прогами быстренько взяли и поправили исходник. Там ошибка есть, что у Юры, что у меня, я щас только нашёл. Вот эту строку
Если пропишем после if (как делали до сего момента), то тогда, если вдруг натыкаемся на системную директорию или файл, то FindFirstFile возвращает -1. Следовательно, всё, что выполнняется по условию (hFile!=INVALID_HANDLE_VALUE) не выполнится и в частности, не будет поставлен конец строки! А это значит, что по выходу из рекурсивной функции GetFileList в том месте, где мы восстанавливаем длину, она будет восстановлена неправильно. Я наткнулся на директорию System Volume Information, не обработал её таким образом, а потом , когда восстанавливал путь, он у меня восстанвился не как C:\ а как C:\Sys! Прибавились эти злополучные три байта, которые я не "отсёк" , не поставил ноль сюда С:\System Volume Informationвот в это место надо ставить ноль!\*.* Поэтому поправьте так:
1
|
Заблокирован
|
|
11.11.2009, 10:10 | 19 |
Медведъ, я не могу понять что именно тебе не надо выводить?Результатом поиска файлов являются их пути или хэндлы, куда тебе их выводить в файл, сделать символьный двухмерный массив???В моей проге пути на экран выводятся...
Что же касается поиска то цикл do while в программе и выполняет поиск...FindNextFile - это функция поиска файла для каталога в котором FindFirstFile вернула хэндл первого файла Детально сформулируй задание, помогуЛучше даже нарисуй интерфейс и как образец сюда выставь, а я попробую его реализовать... Добавлено через 9 минут kravam , если у тебя файловая система NTFS то действительно прога на System Volume Information споткнётся, а вот на фате всё работает, ну а данную манипуляцию sPath[strlen(sPath) - strlen(strstr(sPath,"*.*"))] = '\0'; я делаю по следующей причине : ИмяКаталога\ -> припаиваем к нему "*.*" -> Выходит ИмяКаталога\*.* если в данном каталоге есть файлы то заходим в цикл в котором функция FindNextFile(hFile,&pFILEDATA) постоянно переинициализирует структуру WIN32_FIND_DATA pFILEDATA, а теперь если я бы не убрал данные символы "*.*" из имени каталога то получал бы такие пути ИмяКаталога\*.*\pFILEDATA.cFileName
0
|
1183 / 468 / 87
Регистрация: 23.06.2009
Сообщений: 6,390
|
|
11.11.2009, 10:10 [ТС] | 20 |
-=ЮрА=-, Oo какой интерфейс...я же сказал,осущствить список по компу doc файлов(что уже есть) и изменить весь тет на "*"...этого то нет
0
|
11.11.2009, 10:10 | |
11.11.2009, 10:10 | |
Помогаю со студенческими работами здесь
20
Отобразить в консоли:увеличить и уменьшить длину массива на заданное ранее из консоли число Как запустить программу из консоли без блокировки консоли? Клавиши F1-F12 в консоли, и работа с мышкой в консоли Вызов консоли для другой вкладки из консоли js Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |