Как получить список файлов в папке (например, название музыки и фильмов перенести в текст и всё упорядочить. )
Вопрос от пользователя
Здравствуйте.
Помогите с одним вопросом. У меня есть несколько внешних дисков и на них записаны фильмы. Я хочу получить список всех названий (имен) этих файлов в тексте, чтобы его распечатать и положить рядом в коробочку с диском (скажем, навести порядок!).
Это серьезно бы облегчило поиск и подключение нужного диска.
Эту задачу можно решить несколькими способами (несмотря на то, что я ниже приведу универсальные варианты — в зависимости от вашей версии Windows, часть из них может не сработать. ). Так что проверяйте сразу несколько из них.
Способы получить список имен файлов
Вариант 1 (с помощью Total Commander)
Наиболее простой и предпочтительный вариант (к тому же точно работающий во всех версиях ОС) — воспользоваться помощью Total Commander (ссылка на офиц. сайт). Если кто не знает — это спец. программа для работы с файлами (альтернатива проводнику).
Запустив Total Commander, перейдите в нужный каталог (в тот, где у вас хранятся фильмы, например) и выделите все файлы (для этого достаточно нажать Ctrl+A).

Выделяем все файлы в нужном каталоге
Далее в меню «Выделение» выберите опцию «Сохранить выделение в файл. « (в некоторых версиях программы есть возможность скопировать имена файлов в буфер — если сделаете так, то потом откройте документ Word и вставьте список, нажав Ctrl+V ).

Сохранить выделение в файл (Total Commander)
Собственно, полученный текстовый файл можно открыть в любом блокноте (я использую Notepad++), ну и после распечатать список (Ctrl+P) .

Текстовый файл можно открывать — список готов!
Вариант 2 (через браузер)
Для этого нам понадобиться запустить какой-нибудь современный браузер (я проверял на Chrome и Firefox).
После откройте проводник и перейдите в папку с нужными вам файлами — нужно будет скопировать путь до нее, нажать сочетание Ctrl+C (адрес, вида: «C:\Users\alex\Videos\Фильмы» )

После, вставить этот скопированный «путь» в адресную строку браузера и нажать Enter. В результате вы увидите, что обозреватель покажет вам список всех файлов и дату последнего изменения.
Теперь достаточно выделить всё нужное на странице и скопировать это ().

Открываем путь в Chrome
Затем скопированный список лучше всего вставить (сочетание Ctrl+V) в Excel (или его аналоги). Это удобнее тем, что в Excel вы легко сможете удалить ненужные вам столбики (с датой, например) .
Вставляем список в Excel для дальнейшей работы.
Вариант 3 (список со вложенными файлами и папками)
Этот способ универсальный, и к тому же позволяет получить не только список файлов из текущего каталога, но и из всех вложенных.
Например, есть у вас в каталоге «Видео» отдельная папка «Кино 90-х» , в которой 2 десятка др. фильмов — вышеперечисленные способы бы не позволили узнать их название (из полученного списка), а этот позволит!
Для работы нам понадобиться командная строка (ничего сложного там не будет!) .
В ней нужно последовательно ввести две команды, после каждой нажать Enter:
- cd C:\Users\alex\Videos\Фильмы (вместо «C:\Users\alex\Videos\Фильмы» укажите свой каталог) ;
- dir /b /s | sort > List.txt (эта команда создаст файл «List.txt» в выбранной вами папке со всеми файлами и каталогами, что в нем есть! Кроме этого, она отсортирует список от А к Я).

CMD — открываем каталог, получаем список

Как убрать путь (C:\Video\) из списка
Кстати, если в списке файлов вам среди названия фильмов (файлов) не нужен их путь — то его легко убрать. Для этого в Notepad++ достаточно:
- нажать на Ctrl+F ;
- в окне «Замена» в строку «найти» указать путь (который повторяется в каждой строке);
- в строке «Заменить на» проверить, чтобы была пустота;
- и нажать кнопку «заменить все» . В результате: в вашем списке будут только имена (без пути)!

Убираем путь до каталога в блокноте
Вариант 4 (без доп. софта)
Этот способ работает не во всех версиях ОС Windows (в 10-ке все OK). Зато он быстрый и не требует вообще никакого доп. софта.
- зайти в нужный каталог;
- выделить файлы (Ctrl+A);
- зажать клавишу Shift (левую);
- нажать ПКМ (правую кнопку мыши), не отпуская Shift;
- из появившегося меню проводника выбрать опцию «Копировать как путь» . Теперь в буфере обмена есть все имена файлов из каталога!

Выделяем и копируем путь
Теперь можно открыть блокнот или тот же Word и вставить список (Ctrl+V).

Вставляем скопированный список
Если вам мешает в каждой строке путь («C:\Users\») — то как его убрать см. чуть выше.
На этом, думаю, задача решена!?
Получение списка файлов в папке и подпапках средствами VBA
Функция FilenamesCollection предназначена для получения списка файлов из папки, с учётом выбранной глубины поиска в подпапках.
Используется рекурсивный перебор папок, до заданного уровня вложенности.
В процессе перебора папок, пути у найденным файлам помещаются в коллекцию (объект типа Collection) для последующего перебора.
К статье прикреплено 2 примера файла с макросами на основе этой функции:
- Пример в файле FilenamesCollection.xls выводит список файлов на чистый лист новой книги (формируя заголовки)
- Пример в файле FilenamesCollectionEx.xls более функционален — он, помимо списка файлов из папки, отображает размер файла, и дату его создания, а также формирует в ячейках гиперссылки на найденные файлы.
Вывод списка производится на лист запуска, параметры поиска файлов задаются в ячейках листа (см. скриншот)
Смотрите также расширенную версию макроса на базе этой функции:
Макрос FolderStructure выводит в таблицу Excel список файлов и подпапок с отображением структуры (вложенности файлов и подпапок)

ПРИМЕЧАНИЕ: Если вы выводите на лист список имен файлов картинок (изображений), то при помощи этой надстройки вы сможете вставить сами картинки в ячейки соседнего столбца (или в примечания к этим ячейкам)
Внимание: если требуется, чтобы поиск не зависел от регистра символов в маске файла
(к примеру, обнаруживались не только файлы .txt, но и .TXT и .Txt),
поставьте первой строкой в модуле директиву Option Compare Text
Function FilenamesCollection(ByVal FolderPath As String, Optional ByVal Mask As String = "", _ Optional ByVal SearchDeep As Long = 999) As Collection ' © EducatedFool excelvba.ru/code/FilenamesCollection ' Получает в качестве параметра путь к папке FolderPath, ' маску имени искомых файлов Mask (будут отобраны только файлы с такой маской/расширением) ' и глубину поиска SearchDeep в подпапках (если SearchDeep=1, то подпапки не просматриваются). ' Возвращает коллекцию, содержащую полные пути найденных файлов ' (применяется рекурсивный вызов процедуры GetAllFileNamesUsingFSO) Set FilenamesCollection = New Collection ' создаём пустую коллекцию Set FSO = CreateObject("Scripting.FileSystemObject") ' создаём экземпляр FileSystemObject GetAllFileNamesUsingFSO FolderPath, Mask, FSO, FilenamesCollection, SearchDeep ' поиск Set FSO = Nothing: Application.StatusBar = False ' очистка строки состояния Excel End Function Function GetAllFileNamesUsingFSO(ByVal FolderPath As String, ByVal Mask As String, ByRef FSO, _ ByRef FileNamesColl As Collection, ByVal SearchDeep As Long) ' перебирает все файлы и подпапки в папке FolderPath, используя объект FSO ' перебор папок осуществляется в том случае, если SearchDeep > 1 ' добавляет пути найденных файлов в коллекцию FileNamesColl On Error Resume Next: Set curfold = FSO.GetFolder(FolderPath) If Not curfold Is Nothing Then ' если удалось получить доступ к папке ' раскомментируйте эту строку для вывода пути к просматриваемой ' в текущий момент папке в строку состояния Excel ' Application.StatusBar = "Поиск в папке: " & FolderPath For Each fil In curfold.Files ' перебираем все файлы в папке FolderPath If fil.Name Like "*" & Mask Then FileNamesColl.Add fil.Path Next SearchDeep = SearchDeep - 1 ' уменьшаем глубину поиска в подпапках If SearchDeep Then ' если надо искать глубже For Each sfol In curfold.SubFolders ' перебираем все подпапки в папке FolderPath GetAllFileNamesUsingFSO sfol.Path, Mask, FSO, FileNamesColl, SearchDeep Next End If Set fil = Nothing: Set curfold = Nothing ' очищаем переменные End If End Function
‘ Пример использования функции в макросе:
Sub ОбработкаФайловИзПапки() On Error Resume Next Dim folder$, coll As Collection folder$ = ThisWorkbook.Path & "\Платежи\" If Dir(folder$, vbDirectory) = "" Then MsgBox "Не найдена папка «" & folder$ & "»", vbCritical, "Нет папки ПЛАТЕЖИ" Exit Sub ' выход, если папка не найдена End If Set coll = FilenamesCollection(folder$, "*.xls") ' получаем список файлов XLS из папки If coll.Count = 0 Then MsgBox "В папке «" & Split(folder$, "\")(UBound(Split(folder$, "\")) - 1) & "» нет ни одного подходящего файла!", _ vbCritical, "Файлы для обработки не найдены" Exit Sub ' выход, если нет файлов End If ' перебираем все найденные файлы For Each file In coll Debug.Print file ' выводим имя файла в окно Immediate Next End Sub
Этот код позволяет осуществить поиск нужных файлов в выбранной папке (включая подпапки), и выводит полученный список файлов на лист книги Excel:
Sub ПримерИспользованияФункции_FilenamesCollection() ' Ищем на рабочем столе все файлы TXT, и выводим на лист список их имён. ' Просматриваются папки с глубиной вложения не более трёх. Dim coll As Collection, ПутьКПапке As String ' получаем путь к папке РАБОЧИЙ СТОЛ ПутьКПапке = CreateObject("WScript.Shell").SpecialFolders("Desktop") ' считываем в колекцию coll нужные имена файлов Set coll = FilenamesCollection(ПутьКПапке, ".txt", 3) Application.ScreenUpdating = False ' отключаем обновление экрана ' создаём новую книгу Dim sh As Worksheet: Set sh = Workbooks.Add.Worksheets(1) ' формируем заголовки таблицы With sh.Range("a1").Resize(, 3) .Value = Array("№", "Имя файла", "Полный путь") .Font.Bold = True: .Interior.ColorIndex = 17 End With ' выводим результаты на лист For i = 1 To coll.Count ' перебираем все элементы коллекции, содержащей пути к файлам sh.Range("a" & sh.Rows.Count).End(xlUp).Offset(1).Resize(, 3).Value = _ Array(i, Dir(coll(i)), coll(i)) ' выводим на лист очередную строку DoEvents ' временно передаём управление ОС Next sh.Range("a:c").EntireColumn.AutoFit ' автоподбор ширины столбцов [a2].Activate: ActiveWindow.FreezePanes = True ' закрепляем первую строку листа End Sub
Ещё один пример использования:
Sub ЗагрузкаСпискаФайлов() ' Ищем файлы в заданной папке по заданной маске, ' и выводим на лист список их параметров. ' Просматриваются папки с заданной глубиной вложения. Dim coll As Collection, ПутьКПапке$, МаскаПоиска$, ГлубинаПоиска% ПутьКПапке$ = [c1] ' берём из ячейки c1 МаскаПоиска$ = [c2] ' берём из ячейки c2 ГлубинаПоиска% = Val([c3]) ' берём из ячейки c3 If ГлубинаПоиска% = 0 Then ГлубинаПоиска% = 999 ' без ограничения по глубине ' считываем в колекцию coll нужные имена файлов Set coll = FilenamesCollection(ПутьКПапке$, МаскаПоиска$, ГлубинаПоиска%) Application.ScreenUpdating = False ' отключаем обновление экрана ' выводим результаты (список файлов, и их характеристик) на лист For i = 1 To coll.Count ' перебираем все элементы коллекции, содержащей пути к файлам НомерФайла = i ПутьКФайлу = coll(i) ИмяФайла = Dir(ПутьКФайлу) ДатаСоздания = FileDateTime(ПутьКФайлу) РазмерФайла = FileLen(ПутьКФайлу) ' выводим на лист очередную строку Range("a" & Rows.Count).End(xlUp).Offset(1).Resize(, 5).Value = _ Array(НомерФайла, ИмяФайла, ПутьКФайлу, ДатаСоздания, РазмерФайла) ' если нужна гиперссылка на файл во втором столбце ActiveSheet.Hyperlinks.Add Range("b" & Rows.Count).End(xlUp), ПутьКФайлу, "", _ "Открыть файл" & vbNewLine & ИмяФайла DoEvents ' временно передаём управление ОС Next End Sub
PS: Найти подходящие имена файлов в коллекции можно при помощи следующей функции:
Function CollectionAutofilter(ByRef coll As Collection, ByVal filter$) As Collection ' Функция перебирает все элементы коллекции coll, ' оставляя лишь те, которые соответствуют маске filter$ (например, filter$="*некий текст*") ' Возвращает коллекцию, содержащую только подходящие элементы ' Если элементы не найдены - возвращается пустая коллекция (содержащая 0 элементов) On Error Resume Next: Set CollectionAutofilter = New Collection For Each Item In coll If Item Like filter$ Then CollectionAutofilter.Add Item Next End Function
| FilenamesCollection.xls | 35 КБ |
| FilenamesCollectionEx.xls | 56 КБ |
Как быстро создать список файлов из папки и перенести в таблицу «Excel».
Самый простой способ создания списка файлов, расположенных в папке.
Поделюсь простым проверенным способом создания списка файлов. Пошаговое руководство.
Шаг 1. Войти в папку список файлов из которой вы хотите сформировать.

Шаг 2. Кликнуть правой кнопкой по пустому полю в папке (не по файлу)

Шаг 3. Из выпадающего мену выбрать пункт «Создать»>> «Текстовый документ»
Шаг 4. Открыть появившийся текстовый документ и записать в него три строчки с кодом:

- chcp 1251
- echo From Ruexcel.ru %date% %time% >spisok_faylov.txt
- dir /b /d >> spisok_faylov.txt

Шаг 5. Закрыть с сохранением документ.
Шаг 6. Переименовать расширение файла с «TXT» на «BAT» и нажать кнопку «Enter»

Шаг 7. Запустить полученный файл.

После запуска .bat файла в папке, из которой вы его запустили появится текстовый документ со списком файлов хранящихся в папке, который будет называться «spisok_faylov.txt».

Перенос списка в программу Excel.
Шаг 1. Открыть текстовый документ.
Шаг 2. Выделить левой кнопкой мыши список.

Шаг 3. Нажав правой кнопкой мыши по выделению выбрать пункт «Копировать»

Шаг 4. Открыть документ Excel.

Шаг 5 Кликнуть правой кнопкой мыши в любую ячейку и выбрать из выпадающего меню пункт «Вставить»

Автор Master Of Exc Опубликовано 02.02.2021 02.02.2021 Рубрики Начинающим
Добавить комментарий Отменить ответ
Этот сайт использует Akismet для борьбы со спамом. Узнайте, как обрабатываются ваши данные комментариев.
Как скопировать названия папок в excel
Доброго всем утра!
В папке имеется 200 файлов Excel с уникальными названиями. Как можно эти имена перенести простым списком в Эксель таблицу? Заранее спасибо!
Пользователь
Сообщений: 443 Регистрация: 05.01.2013
18.04.2013 08:36:21
Пользователь
Сообщений: 53 Регистрация: 09.01.2013
18.04.2013 09:05:20
СПАСИБО ВАМ. Я сэкономила УЙМУ времени. Спасибо.
Пользователь
Сообщений: 443 Регистрация: 05.01.2013
18.04.2013 09:13:14
Пользуйтесь поиском по сайту, и не проходите мимо приёмов.
Пользователь
Сообщений: 10514 Регистрация: 21.12.2012
18.04.2013 14:01:10
| Цитата |
|---|
| Карина пишет: В папке имеется 200 файлов Excel с уникальными названиями. |
А не уникальные в одной папке — возможно ли?
Изменено: Михаил С. — 04.12.2014 18:41:04
Пользователь
Сообщений: 443 Регистрация: 05.01.2013
18.04.2013 15:05:59
Михаил С., Цитата сменила автора, заметил такое случается на форуме.
Пользователь
Сообщений: 10514 Регистрация: 21.12.2012
18.04.2013 15:20:51
Sergei_A, сразу не обратил внимания. Изменил.
Пользователь
Сообщений: 2 Регистрация: 01.01.1970
04.12.2014 13:57:32
Доброго дня.
Предлагаю открыть целевую папку в FreeCommander, выделить в ней все файлы и в меню выбрать:
Правка—>Копировать имя как текст.
Останется только вставить массив в Excel.
Удачи.
Пользователь
Сообщений: 315 Регистрация: 04.09.2014
04.12.2014 14:14:00
Для тех у кого есть TotalCommander выделяете нужные файлы, затем Инструменты -> копировать имена файлов в буфер (можно «копировать полные имена файлов» тогда скопируются полностью с путем), а уже в экселе вставляете.
Пользователь
Сообщений: 11251 Регистрация: 01.01.1970
04.12.2014 14:21:31
Народ смотрите на дату последнего ответа 2013 год
Лень двигатель прогресса, доказано.
Пользователь
Сообщений: 315 Регистрация: 04.09.2014
04.12.2014 17:51:14
Сергей, ну советы-то все равно не бессмысленные, мало ли, вдруг кто поиском по форуму воспользуется ))). А вообще-то Вы правы, я как-то мало обращаю внимания на дату последнего поста, если увидел обновление так сразу начинаю думать, что кто-то заинтересовался старой темой ))
Пользователь
Сообщений: 16 Регистрация: 21.11.2019
17.01.2020 16:16:33
1. Создаём текстовый документ
2. В нём пишем всего три строчки: chcp 1251
dir/B>list.doc
exit
3. Переименовать даный текстовый докумкент list.bat
4. Запускаем list.bat в нужной нам папке. Появляется возле него документ list.doc и открывем его!
Радуемся!
Страницы: 1
Читают тему
© Николай Павлов, Planetaexcel, 2006-2023
info@planetaexcel.ru
Использование любых материалов сайта допускается строго с указанием прямой ссылки на источник, упоминанием названия сайта, имени автора и неизменности исходного текста и иллюстраций.
| ООО «Планета Эксел» ИНН 7735603520 ОГРН 1147746834949 |
ИП Павлов Николай Владимирович ИНН 633015842586 ОГРНИП 310633031600071 |
