Скопировать список файлов в папке
Совет тем, кто хочет получить список файлов в папке, для копирования в текстовый редактор
Вы проводите сортировку ваших документов? Совет по копированию имен файлов в несколько нажатий!
Дорогие друзья, то чему я хочу научить вас сегодня выходит за рамки простого удобства и достигает высот соизмеримых только что с перелетом в самолетах, каких-нибудь дорогих арабских компаний (я про самолеты в которых отдельные кабины, душ, все удобства, просто мечта). Но в отличии от дорогостоящего перелета, мои удобные советы, абсолютно бесплатны. Так вот, представим что у вас есть папка, в ней находится огромное количество файлов, а вам необходимо организовать электронный список этих файлов, ужас, вбивать в ручную? Я так не думаю, я серьезно этого делать не собираюсь. Совет о том, как скопировать поименный список файлов из директории. Начнем.
Нам придется править реестр. Мы сделаем несколько простых манипуляций, после которых у нас появится дополнительный пункт меню по нажатию правой клавиши.
Я уже говорил, мы правим реестр, а значит первым делом нам необходимо сделать резервную копию нашей операционной системы, чтобы потом, не пришлось искать виноватых в том, что Windows не грузиться.
Скажу сразу, я не предлагаю ряд действий которые, могут сломают вашу систему. Я предлагаю четкую последовательность по которой все будет работать в лучшем виде, а вот сможете вы ее воспроизвести, дело другое. Не поверите, но находятся пользователи, которые не всегда корректно воспроизводят то, что написано черным по белому.
Возвращаемся к списку файлов нашей папки с огромным количеством элементов название которых мы хотим перенести в цифровой вид (добавить в текстовый редактор, создать таблицу). Если посмотреть возможность нашего контекстного меню (а именно оно вылезает по нажатию правой клавиши мыши), то можно увидеть, что такой функции (скопировать список названий файлов в папке) в Windows по умолчанию нет.
Ну а мы люди интересующиеся, хотим знать чуточку больше про устройство нашей операционной системы, а значит добавить такую команду в контекстное меню не составит труда.
Итак, чтобы открыть редактор реестра нам необходимо сделать следующие шаги:
Нажать сочетание клавиш Win + R (Win — клавиша Windows, находится между Ctrl и Alt в нижней левой части стандартной QWERTY клавиатуры)
В появившемся окне набрать фразу regedit.
После того как откроется редактор реестра нам необходимо проследовать по пути, который я указал ниже:
HKEY_CLASSES_ROOT\Directory\shell
Важно. Этот этап действительно очень важный для понимания. Это общий принцип для всего, что создается в реестре.
Нам необходимо добавить папку listcopy
Дальше мы нажимаем listcopy, обращаем внимание на правую часть редактора реестра. Там должен быть файл с названием “По умолчанию”. Щелкаем дважды левой клавишей мыши на этот файл и выставляем значение “Скопировать в список названия файлов”.
После того как мы поменяем значение в файле, нам необходимо один раз нажать по разделу listcopy, чтобы выделить его. Теперь создаем новый раздел в
cmd /c dir "%1" /b /a:-d /o:n | clip
После того как мы внесли все изменения должны быть следующие директории и измененные в них файлы:
Раздел listcopyпо адресу HKEY_CLASSES_ROOT\Directory\shell
В разделе listcopyизмененный файл “По умолчанию” со значением “Скопировать в список названия файлов”
Раздел commandпо адресу HKEY_CLASSES_ROOT\Directory\shell\listcopy
В разделе commandизмененный файл “По умолчанию” со значением “cmd /c dir «%1» /b /a:-d /o:n | clip” (без кавычек).
Итак, для чего мы все это делали. Давайте проверять, что у нас получилось, как все это работает. В идеале у нас должен получится дополнительный пункт контекстного меню, который по нажатии копирует список названий файлов внутри директории (папки). Находим директорию — нажимаем правую клавишу мыши и видим в списке наш пункт “Скопировать в список названия файлов” — нажимаем — открываем блокнот и вставляем названия сочетанием клавиш Ctrl + V.
Разве это не прекрасно? Думаю многим из вас пригодится этот совет, как скопировать полный список названия файлов в директории Windows 10. Удачи и до новых встреч.
Друзья! Я прошу вас о помощи, если не сложно, бросьте ссылку на этот материал в свои социальные сети. Это поможет со временем попасть чуть выше в поиске в поисковых системах, а значит больше людей увидят этот совет. Вам на сложно а мне очень приятно. Спасибо!
Как получить список файлов в папке
Порой при работе на компьютере возникает необходимость получить список всех файлов в определенной папке. Если файлов в папке немного, это легко осуществить вручную. А если это, например, электронная библиотека или фото архив за несколько лет? Ниже мы рассмотрим несколько способов получения упорядоченного списка всех файлов в определенной папке.
Содержание статьи
Командная строка
Первый рассматриваемый сегодня способ — при помощи командной строки. Для этого проделайте следующее:
- Откройте Проводник, зайдите в папку, список файлов в которой требуется получить, зажмите клавишу SHIFT, нажмите на любом свободном месте правой кнопкой мыши и выберите пункт «Открыть окно команд»
- Чтобы получить список файлов можно использовать две команды —
dir /b
, выводящую файлы и папки исключительно данной директории иdir /s
, выполняющую команду рекурсивно При этом рекурсивный вывод в консоль, в случае если файлов в папке много, может быть неудобен для восприятия так как требуется много раз прокручивать экран - Лучший выход в такой ситуации — сохранить вывод консоли в текстовый файл. Для того введите последовательно команды
chcp 1251
иdir /s>file.txt
- После этого в оцениваемой папке появится текстовый файл, который можно прочитать при помощи обычного Блокнота
Total Commander
Следующий способ оценки количества файлов в папке — популярный файловый менеджер Total Commander. Для того чтобы им воспользоваться, проделайте следующее:
- Скачайте программу по ссылке
- Запустите скачанный файл. Выберите язык установки, после нажмите кнопку «Далее»
- Ответьте на вопрос, нужны ли вам остальные языки
- Укажите каталог для установки
- Укажите требуется ли создание ярлыков
- После завершения установки запустите программу. Бесплатная версия при каждом запуске требует нажатия одной из трех кнопок внизу окна
- В любой из двух панелей файл-менеджера перейдите к папке, файлы в которой необходимо подсчитать
- В меню «Выделение» требуется нажать на команду «Выделить все»
- Выделенные файлы и папки будут обозначены красным цветом. В меню «Выделение» выберите «Копировать имена файлов в буфер»
- После этого можно открыть блокнот и вставить имена файлов в текстовый редактор
DirLister
Последний способ получить имена всех файлов в папке, который мы рассмотрим сегодня — маленькая утилита DirLister. Для этого нужно будет пройти следующим путем:
- Скачайте программу по ссылке и запустите скачанный файл
- В поле «Directory to scan» нажмите кнопку «Open» и выберите директорию, содержимое которой требуется проанализировать
- В поле «Output file» нажмите на кнопку «Save as» и выберите местоположение файла, в который требуется записать список содержимого папки
- В разделе «Options» можно выбрать, включать ли в вывод путь к файлам («Include file path»), нужен ли рекурсивный вывод («include subfolders» и «Include directoryes») и требуется ли включать скрытые файлы («Inc. Hidden Files»)
- Блок «File Type» позволяет выбрать формат файла вывода. Доступны обычный текстовый файл (Plain Text), текстовый файл с разделителем-табулятором (TAB Separated), текст с разделителем-пробелом (SPACE Sep.), таблица Excel а также формат HTML
- После выбора всех параметров нажмите на кнопку «Make List»
На этом сегодняшний обзор закончен, надеюсь описанные в нем решения будут вам полезны.
Список файлов в папке
Иногда бывает необходимо заполучить на лист Excel список файлов в заданной папке и ее подпапках. В моей практике такое встречалось неоднократно, например:
- перечислить в приложении к договору на проведение тренинга список файлов из раздаточных материалов для особо щепетильных юристов в некоторых компаниях
- создать список файлов для ТЗ проекта
- сравнить содержимое папок (оригинал и бэкап, например)
Для реализации подобной задачи можно использовать несколько способов.
Способ 1. Скелет из шкафа — функция ФАЙЛЫ
Этот способ использует древнюю функцию ФАЙЛЫ (FILES)
Механизм таков:
1. В любую ячейку листа (например, в А1) введём путь к папке, список файлов из которой мы хотим получить.
Обратите внимание, что путь должен оканчиваться шаблоном со звездочками:
- *.* — любые файлы
- *.xlsx — книги Excel (только с расширением xlsx)
- *.xl* — любые файлы Excel
- *отчет* — файлы, содержащие слово отчет в названии
и т.д.
2. Создадим именованный диапазон с помощью вкладки Формулы — далее кнопка Диспетчер имен — Создать (Formulas — Names Manger — Create). В открывшемся окне введем любое имя без пробелов (например Мои_файлы) и в поле диапазона выражение:
=ФАЙЛЫ(Лист1!$A$1)
После нажатия на ОК будет создан именованный диапазон с именем Мои_файлы, где хранится список всех файлов из указанной в А1 папки. Останется их оттуда только извлечь.
3. Чтобы извлечь имена отдельных файлов из созданной переменной, используем функцию ИНДЕКС (INDEX), которая в Excel вытаскивает данные из массива по их номеру:
Если лениво делать отдельный столбец с нумерацией, то можно воспользоваться костылем в виде функции СТРОКИ (ROWS), которая будет подсчитывать количество заполненных строк с начала списка автоматически:
=ИНДЕКС(Мои_файлы; ЧСТРОК($B$3:B3))
Ну, и скрыть ошибки #ССЫЛКА! в конце списка (если вы протягиваете формулу с запасом) можно стандартной функцией ЕСЛИОШИБКА (IFERROR):
=ЕСЛИОШИБКА(ИНДЕКС(Мои_файлы; ЧСТРОК($B$3:B3)); «»)
Важное примечание: формально функция ФАЙЛЫ относится к макро-функциям, поэтому необходимо будет сохранить ваш файл в формате с поддержкой макросов (xlsm или xlsb).Способ 2. Готовый макрос для ленивых
Если вы знакомы с макросами (не в смысле их программирования, а в смысле копипастинга готовых кодов на VBA), то вам, возможно, отлично зайдёт небольшой макрос, добавляющий в текущую книгу новый пустой лист и выводящий на него список всех файлов с их параметрами из заданной пользователем папки.
Для добавления макроса в вашу книгу нажмите сочетание клавиш Alt+F11, или кнопку Visual Basic на вкладке Разработчик (Developer), в открывшемся окне редактора Visual Basic вставьте новый модуль через меню Insert — Module и скопируйте туда текст этого макроса:
Sub FileList() Dim V As String Dim BrowseFolder As String 'открываем диалоговое окно выбора папки With Application.FileDialog(msoFileDialogFolderPicker) .Title = "Выберите папку или диск" .Show On Error Resume Next Err.Clear V = .SelectedItems(1) If Err.Number <> 0 Then MsgBox "Вы ничего не выбрали!" Exit Sub End If End With BrowseFolder = CStr(V) 'добавляем лист и выводим на него шапку таблицы ActiveWorkbook.Sheets.Add With Range("A1:E1") .Font.Bold = True .Font.Size = 12 End With Range("A1").Value = "Имя файла" Range("B1").Value = "Путь" Range("C1").Value = "Размер" Range("D1").Value = "Дата создания" Range("E1").Value = "Дата изменения" 'вызываем процедуру вывода списка файлов 'измените True на False, если не нужно выводить файлы из вложенных папок ListFilesInFolder BrowseFolder, True End Sub Private Sub ListFilesInFolder(ByVal SourceFolderName As String, ByVal IncludeSubfolders As Boolean) Dim FSO As Object Dim SourceFolder As Object Dim SubFolder As Object Dim FileItem As Object Dim r As Long Set FSO = CreateObject("Scripting.FileSystemObject") Set SourceFolder = FSO.getfolder(SourceFolderName) r = Range("A65536").End(xlUp).Row + 1 'находим первую пустую строку 'выводим данные по файлу For Each FileItem In SourceFolder.Files Cells(r, 1).Formula = FileItem.Name Cells(r, 2).Formula = FileItem.Path Cells(r, 3).Formula = FileItem.Size Cells(r, 4).Formula = FileItem.DateCreated Cells(r, 5).Formula = FileItem.DateLastModified r = r + 1 X = SourceFolder.Path Next FileItem 'вызываем процедуру повторно для каждой вложенной папки If IncludeSubfolders Then For Each SubFolder In SourceFolder.SubFolders ListFilesInFolder SubFolder.Path, True Next SubFolder End If Columns("A:E").AutoFit Set FileItem = Nothing Set SourceFolder = Nothing Set FSO = Nothing End Sub
Для запуска макроса нажмите сочетание клавиш Alt+F8,или кнопку Макросы (Macros) на вкладке Разработчик (Developer), выберите наш макрос FileList и нажмите кнопку Выполнить (Run). В диалоговом окне выберите любую папку или диск и — вуаля!
Если захотите, чтобы вместо пути к файлу в столбце B выводилась живая гиперссылка, то замените 52-ю строку
Cells(r, 2).Formula = FileItem.Path
на
Cells(r, 2).Formula = «=HYPERLINK(«»» & FileItem.Path & «»»)»
Способ 3. Мощь и красота — надстройка Power Query
Power Query — это очень мощная и при этом бесплатная надстройка для Excel от Microsoft, упрощающая множество задач по загрузке и трансформации данных. В нашей ситуации она тоже может здорово помочь.
Если у вас Excel 2016 или новее, то Power Query уже встроена в Excel по умолчанию, поэтому просто на вкладке Данные выберите команду Создать запрос / Получить данные — Из файла — Из папки (Create Query / Get Data — From file — From folder). Если у вас Excel 2010-2013, то Power Query нужно будет скачать с сайта Microsoft и установить как отдельную надстройку и она появится у вас в Excel в виде отдельной вкладки Power Query. На ней будет аналогичная кнопка Из файла — Из папки (From file — From folder).
В открывшемся окне нужно будет указать папку, содержимое которой мы хотим получить. После нажатия на ОК Power Query обшарит указанную папку и все вложенные подпапки и выдаст на экран окно с предварительным просмотром результатов:
Если внешний вид списка вас устраивает, то можно смело жать внизу кнопку Загрузить (Load), чтобы залить эти данные на новый лист. Если же хочется дополнительно обработать список (удалить лишние столбцы, отобрать только нужные файлы и т.п.), то нужно выбрать команду Изменить / Преобразовать данные (Edit / Transform Data).
Поверх окна Excel откроется окно редактора Power Query, где мы увидим список всех наших файлов в виде таблицы:
Дальше возможны несколько вариантов:
- Если нужны только файлы определенного типа, то их можно легко отобрать с помощью фильтра по столбцу Extension:
- Аналогичным образом фильтрами по столбцам Date accessed, Date modified или Date created можно отобрать файлы за нужный период (например, созданные только за последний месяц и т.п.):
- Если нужно получить данные не из всех папок, то фильтруем по столбцу Folder Path, чтобы оставить только те строки, где путь содержит/не содержит нужные имена папок:
- Там же можно выполнить сортировку файлов по любому столбцу, если требуется.
После того, как необходимые файлы отобраны, можно смело удалить ненужные столбцы, щелкнув по заголовку столбца правой кнопкой мыши и выбрав команду Удалить (Remove column). Это, кстати, уже никак не повлияет на фильтрацию или сортировку нашего списка:
Если в будущем планируется подсчитывать количество файлов в каждой папке (например, для контроля поступивших заявок или подсчета статистики по заявкам), то имеет смысл дополнительно сделать ещё пару действий:
- Щелкните правой кнопкой мыши по столбцу Folder Path и выберите команду Дублировать столбец (Duplicate Column).
- Выделите скопированный столбец и на вкладке Преобразование (Transform) выберите Разделить столбец — По разделителю (Split Column — By delimiter)
Мы получим рядом с нашими данными еще несколько столбцов, где будут продублированы имена вложенных папок — это пригодится нам чуть позже для подсчета статистики с помощью сводной таблицы:
Получившиеся столбцы можно переименовать (Диск, Папка1, Папка2 и т.д.), просто щёлкнув дважды по заголовку каждого.
И, наконец, когда список готов, то его можно выгрузить на лист с помощью команды Главная — Закрыть и загрузить — Закрыть и загрузить в… (Home — Close & Load — Close & Load to…):
И, само-собой, теперь можно построить по нашей таблице сводную (вкладка Вставка — Сводная таблица), чтобы легко подсчитать количество файлов в каждой папке:
Дополнительным бонусом можно сделать еще один столбец с функцией ГИПЕРССЫЛКА (HYPERLINK), которая создаст красивые стрелочки-ссылки для моментального перехода к каждому файлу:
Мелочь, а приятно :)
И вдвойне приятно, что в будущем, при изменении содержимого исходной папки, достаточно будет просто щелкнуть мышью по нашей таблице и выбрать команду Обновить (Refresh) — и Power Query выполнит всю цепочку запрограммированных нами единожды действий уже автоматически, отобразив все изменения в составе папки.
Ссылки по теме
Список файлов в папке легко получить этим способом
Недавно мне понадобилось составить список файлов в папке, а именно музыкальных композиций, которые находились в каталоге с музыкой и распечатать этот список на принтере, при этом нужный каталог вмещал большое количество mp3-файлов.
В интернете нашёл способ сделать это при помощи командной строки Windows, но я не очень люблю работу в командной строке. И вот, продолжительными поисками оптимального способа, было найдено нужное решение.
Как говорится, всё гениальное просто. Нам нужно создать всего лишь один bat-файл, разместить его в необходимом каталоге и запустить, после чего будет создан файл в формате «.doc», который будет включать в себе названия всех имеющихся объектов.
Итак, приступим к созданию такого волшебного батника. Самое главное условие — расширение исполняемого файла должно быть «.bat». Как включить отображение расширений в операционной системе Windows можно узнать из статьи «Как включить отображение расширения файлов». Второе условие (необязательное) — желательно использовать текстовый редактор Notepad++.
СПИСОК ФАЙЛОВ
Открываем программу Notepad++ и создаем новый документ. Копируем этот код:
chcp 1251 dir/B>spisok.doc exit
и вставляем его в документ.
Переходим в меню «Файл» — «Сохранить как…».
Выбираем директорию для сохранения (Рабочий стол), в поле «Имя файла» — пишем например spisok.bat, а в поле «Тип» — выбираем «All types (*.*)» («Все типы») и сохраняем его.
Получаем на Рабочем столе исполняемый файл «spisok.bat».
Теперь для получения желаемого, копируем и вставляем созданный нами выше файл в папку и запускаем его. После чего в ней же и получаем документ «spisok.doc», открыв который при помощи Microsoft Word (выбираем нужную кодировку, если есть русское название), увидим список.
Чтобы получить содержимое всех вложенных каталогов в выбранной директории вместо «dir/B>spisok.doc » ставим «dir/S>spisok.doc».
Если этот компьютерный совет был Вам полезен, прошу отправить ссылку на статью своим друзьям через кнопки социальных сетей. Не забывайте оставлять комментарии. Спасибо большое!
Способы получить список файлов в папке
Современные жесткие диски, имеющие большие размеры, позволяют вместить довольно много разнообразных файлов. И рано или поздно наступит момент, когда приходится приступать к их систематизации и составлению списка. Иногда список необходим тогда, когда на компьютере имеется не просто много, а очень много разнообразных файлов и необходимо навести в них порядок. Конечно, сделать это можно и вручную, но на это уйдет много времени будет просто непрактично.
Чтобы быстро составить список имеющихся в папке файлов, рекомендуем воспользоваться различными способами, которые рассмотрим более подробно.
Вариант 1. Сохраняем список файлов, воспользовавшись командной строкой
Чтобы воспользоваться этим способом, необходимо открыть папку, в которой находятся все файлы для будущего списка. Теперь нужно нажать клавишу «Shift» и кликнуть левой кнопкой мыши. Должно появиться меню, в котором выбирается пункт «Открыть окно команд».
Далее, в открывшемся окне консоли, можно увидеть путь к нужной вам директории (папке или раздел жесткого диска).
Для того чтобы создать список, следует ввести одну из указанных ниже команд:
«dir /b>filelist.txt» или «dir /s>filelist.txt» — вводить без кавычек.
При вводе нужно помнить, что вводя команду «dir» оставляем пробел, а слово «filelist» можете заменить на любое, написав его латинскими буквами. И не забывайте о формате «.txt» в самом конце команды.
Обе эти команды выполняют одинаковое действие, но различаются по своим критериям и возможностям. А именно сохранением списка файлов. А именно команда с «/b» сохраняет в списке только названия файлов. А «/s» собирает в список войдут не только основная папка, но все ее содержимое.
Теперь можно будет открыть сохраненный список при помощи программы «Блокнот».
Стоит сказать, что корректно отображаются только названия, написанные на латинском шрифте. Все остальные языки просто будут не распознаны и отображены в виде непонятных символов. Это связано с тем, что «Блокнот» просто не разбирает кодировку MS-DOS. И тогда лучший вариант для открытия списка в «Word» или его заменители. Для запуска необходимо будет щелкнуть левой клавишей мыши по файлу и выбрать в списке команд «Открыть с помощью». Тут выбираем свой текстовый редактор.
Вариант 2. Получаем список файлов с использованием bat файла
Для того чтобы получить список файлов из папки, можно воспользоваться bat файлом. Есть несколько способов, как можно создать файл, имеющий расширение «.bat», имеющий разную кодировку. Чтобы создать такой файл необходимо просто открыть Блокнот, после чего вставляется следующий код:
«chcp 1251
echo te% %time% >filelist.txt
dir /b /d >>filelist.txt»
Обязательно сохраняем документ в следующем виде: filelist.bat.
теперь нажимаем на кнопку «Сохранить».
Получившийся файл размещаем в той папке, для файлов которой составляется список. Запускаем файл. После исполнения, в папке появится файл, filelist.txt, содержащий полный перечень файлов.
Вариант 3. Получение списка через программу «DirLister»
Если не хочется возиться с кодировкой, а список очень нужен, то можно составить его, скачав небольшую бесплатную программу «DirLister». Она не требует установки на компьютер, так как достаточно будет только распаковать архив.
Загрузить DirLister
После запуска приложения DirLister нажимаем на кнопку «Open» и выбираем раздел «Directory To Scan». Теперь следует выбрать папку, которая будет сканироваться для составления списка.
После того как список будет составлен, заходим в раздел «Output File» и выбираем кнопку «Save As». Теперь выбираем место и имя для сохранения готового списка.
Есть возможность выставить параметры поиска и составления списка, имя и тип файлов. И не забудьте после того как установите настройки нажать на кнопку «Make List».
Об окончании сканирования программа известит сообщением : «All file processed correctly».
Благодаря использованию программы DirLister можно не только составить список файлов из данной папки, но и полную информацию о том, сколько всего файлов и папок, а так же о размерах этих файлов.
Вариант 4. Составления списка через программу «Total Commander»
Составить список можно и с использованием файлового менеджера — «Total Commander». Чтобы создать список необходимо запустить программу, открыть в ней нужную папку.
Выделяем все при помощи нажатия клавиши «Shift» и стрелок вверх или вниз. Можно зайти в меню программы, выбрать там «Выделение» и пункт «Выделить все». Сразу после выделения, необходимо выбрать пункт «Копировать имена в буфер».
Теперь можно открывать офисный файл или Блокнот и вставляете туда полученный список из буфера обмена.
Есть возможность сразу сохранить список в файл, для чего в разделе «Выделение» выбираем пункт «Сохранить выделение в файл». Вы сможете выбрать место сохранения, дать файлу имя и формат. Лучше всего выбирать формате «TXT».
Вариант 5. Сохранение списка файлов через браузер
Если необходимо составить список файлов, но не хочется ни ставить программы, заниматься кодами и тем более не установлен «Total Commander», то можно получить список файлов из файлов, воспользовавшись самым обычным браузером.
Для этого необходимо открыть любой браузер, после чего нужная папка при помощи зажатой кнопки мыши перетаскивается в окно браузера. Далее вы увидите готовый список. Его можно дальше скопировать в любой текстовый редактор или в любой другой формат.
Итог
Если необходимо срочно сделать список имеющихся файлов, размещенных как в файлах так и на жестких дисках, то воспользовавшись одним из предложенных вариантов, можно будет сделать все быстро.
Добавить комментарий
Получение списка файлов в папке и подпапках
Функция 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
Пакетное создание папок по списку с разными именами с помощью *.bat?
Всем привет! После длительного затишья, я снова вернулся! Кстати я обновил свой блог и надеюсь это как то простимулирует меня на дальнейшее его развитие!
[contents] И так, приступим!
Сегодняшняя наша тема, это «как создать много папок с разными именами из списка?» данная нетривиальная задача, может Вам сейчас показаться смешной, НО когда Вам дают создать более 1000 папок, то вручную это надо потратить уйму времени и сил, а я человек ленивый) поэтому выкладываю вам рабочий вариант как создать много папок с разными именами автоматически!
В данной статье мы будем разбирать два варианта автоматизации создания папок с разными именами:
- Автоматическое создание папок по списку
- Создание подпапок во всех папках
Автоматическое создание папок по списку
Для этого нужно создать bat файл:
- кликаем правой кнопкой на рабочем столе
- выбираем из меню пункт — создать
- Выбираем — текстовый документ
- далее удаляем все название и формат (у вас по умолчанию должен создаться документ — Новый текстовый документ.txt -обратите внимание, что бы стоял формат файла txt, если он не стоит, Вам надо в настройках включить отображение расширений фалов) и вписываем название файла допустим test.bat (формат должен быть именно bat )
- открываем его кликая на нем правой кнопкой мыши и выбираем из списка меню — Изменить
- а теперь самое интересное) вписываем в него следующую команду:
@<«list.txt» (for /f «delims=» %%i in (‘more’) do @md «%%~i») - и в этом же месте где мы создали наш первый bat скрипт создаем текстовый файл с именем list.txt в который вписывайте в строчку все названия папок которые Вам нужны
- Запускайте Ваш файл и вуаля) у вас создались автоматически за несколько секунд сотни и тысячи папок по Вашему списку)
Вот таким незаурядным способом можно облегчить себе жизнь, а заодно и прокачать себе мозг новыми знаниями)
Теперь усложняем задачу, теперь нам в каждой из этих папок нужно создать еще и подпапки
Создание подпапок во всех папках
- Как и по прошлой инструкции создаем bat файл
- Открываем его и вписываем след команду:
for /d %%g in (c:\kuda\*) do call xcopy c:\cto\* /E %%g
- Разбираем команду:
c:\kuda\ — прописываем путь куда должны копироваться папки
c:\cto\* — что должно копироваться (в моем случае я копировал все подпапки из директории cto) - Запускаем наш bat файл и смотрим результат )
Если Вам была полезна эта статья или Вы его хотите чем то дополнить, пишите в комментариях!
PS!!! Если у вас будут проблемы с кодировкой и русскими именами, то нужно сделать следующее:
Для этой операции я использую расширенный блокнот Notepad++.
1) Ctrl+A скопируйте код
2) Удалить код
3) Выберите в Меню «Кодировки» -> «Кодировки» -> «Кириллица» -> «OEM-866»
4) Вставить код
5) Сохраняете документ
6) Запускаете Ваш скрипт
после этого проблем с кодировкой быть не должно!
В этой статье вы узнаете как сделать: создание папок по списку из текстового файла, пакетное создание папок, создание папок по списку из текстового файла, как создать много папок с разными именами, как создать несколько новых папок сразу, программа для создания папок, как быстро создать много файлов, пакетное создание папок, как быстро создать много файлов, создать несколько каталогов, bat создать папку в папке, создать много папок bat, как быстро создать много файлов, программа для создания папок, cmd создать несколько файлов
Сохранение списка файлов и содержимого папок в текстовый файл
Сохранить полный список файлов, содержащихся в папке, легко, и есть два быстрых способа сохранить этот список в виде текстового файла.
Сохранить список файлов из Finder
Первый подход может быть самым простым для большинства пользователей и осуществляется через приложение OS X Finder и TextEdit, это простой вопрос копирования и вставки:
- Откройте папку, в которой вы хотите получить список содержимого, и нажмите Command + A (Выбрать все), а затем Command + C (Копировать)
- Теперь запустите TextEdit, откройте меню «Правка» и выберите «Вставить и сопоставить стиль» или нажмите Command + Option + Shift + V.
- Сохраните список каталогов как файл.txt или .rtf
Сохранение подробного списка файлов из терминала
Второй подход использует командную строку, и, несмотря на то, что он выполняется через Терминал, не намного сложнее, чем подход копирования и вставки, описанный выше. Запустите Терминал из / Applications / Utilities /, чтобы начать.
В основном это следующая команда:
ls> contents.txt
Для включения скрытых файлов в список требуется флаг -a:
ls -a> allcontents.txt
Чтобы вывести содержимое определенной папки, укажите путь к каталогу следующим образом:
ls / Library / Preferences /> LibPrefsList.txt
Прикрепление определенных флагов к команде ls позволит списку отображать больше, чем просто список содержимого файла, флаг -l также перечислит разрешения, права собственности на файл и даты модификации:
ls -la / Library / Preferences /> detailprefsinfo.txt
Поскольку команда ls принимает флаги, которые описывают дополнительные атрибуты файлов и папок, она может быть гораздо более информативной, чем подход Finder & TextEdit, который не отображает такие детали, как права собственности на файлы или права доступа к документам.
Подход с использованием командной строки также позволяет вам делать такие вещи, как сравнение двух списков каталогов с помощью команды diff, что может быть выполнено путем сравнения выходных файлов друг с другом или даже прямого сравнения папок и сохранения разницы этих результатов в виде текстового файла. .
Связанные
.Как мне копировать файлы из подпапок? (список имен файлов находится в текстовом файле) с использованием командной строки и perl
Переполнение стека- Около
- Товары
- Для команд
- Переполнение стека Общественные вопросы и ответы
- Переполнение стека для команд Где разработчики и технологи делятся частными знаниями с коллегами
- Вакансии Программирование и связанные с ним технические возможности карьерного роста
- Талант Нанимайте технических специалистов и создавайте свой бренд работодателя
- Реклама Обратитесь к разработчикам и технологам со всего мира
- О компании
Applescript: получить имена файлов в папке без расширения
Переполнение стека- Около
- Товары
- Для команд
- Переполнение стека Общественные вопросы и ответы
- Переполнение стека для команд Где разработчики и технологи делятся частными знаниями с коллегами
- Вакансии Программирование и связанные с ним технические возможности карьерного роста
- Талант Нанимайте технических специалистов и создавайте свой бренд работодателя
- Реклама Обратитесь к разработчикам и технологам со всего мира
- О компании
скрипт Python создает папки из имени файла
Переполнение стека- Около
- Товары
- Для команд
- Переполнение стека Общественные вопросы и ответы
- Переполнение стека для команд Где разработчики и технологи делятся частными знаниями с коллегами
- Вакансии Программирование и связанные с ним технические возможности карьерного роста
- Талант Нанимайте технических специалистов и создавайте свой бренд работодателя
- Реклама Обратитесь к разработчикам и технологам со всего мира
- О компании