Андрей Смирнов
Время чтения: ~24 мин.
Просмотров: 0

Как получить список файлов, которые находятся в папке windows

ЧЕМ УДОБНА ПАПКА

В молодости моих родителей еще не была так распространена фотография, как сейчас. На сегодняшний день осталось лишь небольшое количество снимков, которые запросто поместятся в маленький фотоальбом.

Мы все с трепетом храним теплые воспоминая: наше детство, юность, студенческие годы, первая поездка на море и т.д. Фотографии на бумажном носителе со временем теряют свои цвета, резкость, форму.

Мы загружаем все наши снимки на компьютер с желанием продлить им “жизнь”. Со временем вы узнаете, как из фотографии столетней давности сделать почти новый фотопортрет, но не будем торопиться, не всё сразу.

Для чего же все-таки создавать папки на рабочем столе? Если провести аналогию с бумажным носителем, то это те самые папки с тесемками, которые раньше заполняли стеллажи в бухгалтерии, только в электронном виде. Там мы храним все, что может храниться в электронном виде. На сегодняшний день это любая информация.

Можно создать папку со всеми своими электронными книгами, отдельную папку с работами любимых художников и многое другое. Все это позволяет хранить ваш верный и надежный друг и помощник – компьютер. Главное – не спешить и найти с ним общий язык. Тогда все будет хорошо.

Чем больше вы общаетесь с ПК , тем больше появляется документов, необходимых для работы. Их нужно уметь систематизировать, чтобы быстро находить нужное в них. В папках на рабочем столе можно хранить все, что угодно: фотографии, статьи, книги, видеоролики, документы и многое другое. Но как создать папку?

Справочная информация

ДокументыЗаконыИзвещенияУтверждения документовДоговораЗапросы предложенийТехнические заданияПланы развитияДокументоведениеАналитикаМероприятияКонкурсыИтогиАдминистрации городовПриказыКонтрактыВыполнение работПротоколы рассмотрения заявокАукционыПроектыПротоколыБюджетные организацииМуниципалитетыРайоныОбразованияПрограммыОтчетыпо упоминаниямДокументная базаЦенные бумагиПоложенияФинансовые документыПостановленияРубрикатор по темамФинансыгорода Российской Федерациирегионыпо точным датамРегламентыТерминыНаучная терминологияФинансоваяЭкономическаяВремяДаты2015 год2016 годДокументы в финансовой сферев инвестиционной

Почему не открываются папки на компьютере и что делать

Причин не открывания папок на вашем компьютере может быть очень много, начиная от простого сбоя в работе проводника до заражения вашей операционной системы вирусами.

И возникает естественный вопрос: Что делать в сложившейся ситуации?

Давайте рассмотрим способы решения этой проблемы.

1 Перезапуск программы Проводник

Как известно все действия связанные с папками напрямую зависят от этой программы, поэтому в первую очередь следует ее перезапустить.

Для этого открываем диспетчер задач сочетаниями клавиш CTRL+SHIFT+ESC.

Или наводим курсор мышки на панель задач, нажимаем правую кнопку, вызывая контекстное меню и из списка выбираем «диспетчер задач».

Открытие диспетчера задач через контекстное меню панели задач

В открывшемся окне программы ищем задачу «Проводник» правой кнопкой мыши вызываем контекстное меню и жмем «Перезапустить».

Перезапуск проводника через диспетчер задач

2 Перезапуск операционной системы компьютера

Если первый способ не помог, пробуем перезагрузить компьютер с помощью меню пуск.

Перезагрузка компьютера

Или кнопок на вашем системном блоке.

3 Проверка системы на вирусы

Проверку системы на вирусы рекомендуется делать регулярно, а не только когда возникают проблемы. Для этого я использую программу Аваст у нее, кстати, есть бесплатная версия.

Запускаю программу и жду, когда завершится проверка.

Запуск Аваст для сканирования компьютера на вирусы

У меня все в порядке, а если у вас антивирус нашёл вирусы, то с помощью него удаляем их.

И проверяем, устранена ли наша проблема.

Также вы можете воспользоваться в качестве альтернативы антивирусной программе бесплатной утилитой Dr.Web Cureit.

4 Очистка системы от мусора

Чистку системы также следует проводить регулярно, это не только может исправить проблемы, но и существенно увеличить скорость работы вашего ПК.

И для этого отлично подойдёт программа CCleaner.

Рабочее окно программы CCleaner

О том, как установить и пользоваться CCleaner я подробно описал .

5 Восстановление операционной системы

Устранить возникшие проблемы можно восстановив раннее состояние компьютера.

Для этого переходим в панель управления. Выбираем категорию «Система безопасности».

Панель управления

Потом переходим «Центр безопасности и обслуживания».

Окно системы безопасности

Выбираем «Восстановление».

выбор востановления в центре безопасности и обслуживания

Далее жмем «Запуск восстановления системы».

Окно востановления компьютера

В открывшемся окне «Далее».

Процесс востановления раннего состояния компьютера

На следующем этапе выбираем точку восстановления и жмем «Далее».

Выбор точки востановления

Точка восстановления должна быть по времени раньше начавшейся проблемы.

Подтверждаем точку восстановления.

Подтверждение точки востановления

После этого запустится процесс восстановления по окончании, которого компьютер перезагрузится.

Если не один из способов не помог, то будьте готовы прибегнуть к крайним мерам, таким как отнести ПК, к специалисту отдав за это деньги.

Или же самостоятельно установить операционную систему Windows на него заново.

Если папки не открываются по двойному щелчку

Также часто возникает ситуация когда комп не открывает папки по двойному щелчку кнопок компьютерной мыши.

Личный опыт

Александр Зырянов
Автор блога webnub.ru

У меня у самого как-то возникала такая проблема. Что я только не делал, вплоть до восстановления системы ничего не помогало. Решение оказалось простое, надо было просто в настройках мыши уменьшить скорость двойного щелчка.

О том, как войти в настройки мыши, подробно описано в статье:

Cтруктура окна системы Windows

Когда открывают папку или библиотеку, она отображается в окне. Различные компоненты этого окна облегчают перемещение в Windows и упрощают работу с файлами, папками и библиотеками.

Вот типичное окно и его компоненты:

Компонент окна

Использование

Область навигации

С помощью области переходов можно получить доступ к библиотекам, папок, сохраненных результатов поиска и даже целых жестких дисков. Из раздела «Избранное» можно открывать часто используемые папки и результаты поиска, а из раздела «Библиотеки» можно получить доступ к своим библиотек.

Для просмотра папок и вложенных папок можно воспользоваться и папкой «Компьютер».

Кнопки «Назад» и «Вперед»

Кнопки Назад и Вперед позволяют переходить к другим (уже открытых) папок и библиотек, не закрывая текущее окно. Эти кнопки работают в сочетании со строкой адреса. Например перейдя от одной папки в другую с помощью строки, можно воспользоваться кнопкой «Назад», чтобы вернуться к предыдущей папке.

Панель инструментов

Панель инструментов позволяет выполнять стандартные задачи, например изменять вид папок и файлов, записывать файлы на компакт-диск или запускать показ слайдов цифровых изображений. Кнопки на панели инструментов изменяются, отображаются только уместны для каждого конкретного случая задачи.

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

Панель адреса

С помощью адресной строки можно переместиться в другую папку или библиотеки, а также вернуться к предыдущей папке или библиотеке. Дополнительные сведения см. Навигация с помощью строки.

Область библиотек

Область библиотек появляется только во время работы в библиотеке (например, в библиотеке документов). С помощью области библиотек можно настроить библиотеку или упорядочить файлы различными свойствами. Дополнительные сведения см. Работа с библиотеками.

Заголовки столбцов

С помощью заголовков столбцов можно изменить упорядочения файлов в списке. Например, щелкнув левую часть заголовка столбца, можно изменить порядок отображения файлов и папок щелкнув правую часть заголовка столбца, можно отфильтровать файлы различными способами. (Заметьте, что заголовки столбцов доступны только в режиме «Подробно»)

Список файлов

Здесь отображается содержимое текущей папки или библиотеки. Если воспользоваться полем поиска для поиска файла, отображается только файлы в текущем представлении (к нему относятся и файлы во вложенных папках).

Поле поиска

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

Область сведений

Область сведений позволяет просматривать стандартный набор свойств, связанных с выделенным файлом. Свойства файла – это информация о файле: имя автора, дата последнего изменения и описательные теги, которые можно добавить к файлу.

Область просмотра

В области просмотра можно просмотреть содержимое большинства файлов. Выбрав электронной почты, текстовый файл или изображение, можно увидеть содержимое выбранного файла, не открывая его в программе. Если область просмотра не отображается, включите, нажав на панели инструментов кнопку Область просмотра.

Операция переименования папок и файлов

Все объекты на жестком диске компьютера имеют свои имена уникальные внутри одного каталога. Имена можно менять произвольным образом любое количество раз, главное соблюдать требования файловой системы к ним. В случае ввода недопустимого имени компьютер выведет предупреждение об этом.

Для переименования необходимо выделить нужный объект одиночным щелчком ЛКМ чтобы он под светился цветом и после небольшой задержки произвести по нему еще один клик ЛКМ. Имя должно выделиться синим, теперь можно ввести на клавиатуре новое имя и щелкнуть ЛКМ на свободном месте в окне Проводника или нажать на клавиатуре клавишу Enter.

Альтернативный вариант переименования файлов и папок предполагает использование всплывающего контекстного меню Проводника. Щелкнете на объекте ПКМ и выберете пункт «Переименовать» дальнейшие действия как описано выше.

Последний способ переименовать объект задействует меню Проводника. Выделите нужный файл или папку щелчком ЛКМ и в меню Проводника выберите «Файл» ⇒ «Переименовать», а дальше все как в других способах.

Как выделить несколько файлов сразу?

Существует несколько способов одновременного выделения ряда файлов, каждый из которых можно использовать в зависимости от случая.

  1. При выделении всех файлов папки используется сочетание клавиш Ctrl + A. На клавиатуре зажимается клавиша Ctrl, а затем символ A в английской раскладке.
  2. Выбор группы файлов из папки проводится в несколько этапов:
    • Сначала открывается папка, в которой находятся необходимые файлы.
    • Затем выбираете наиболее удобное отображение значков в зависимости от типа файлов. Это может быть список, таблица, значки большого, маленького или стандартного размера. Когда в папке находятся файлы изображений, видеофайлы, тогда при помощи эскизов или миниатюр можно получить представление об их содержимом.
    • При выборе отдельных файлов необходимо удерживать клавишу Ctrl и не отпуская, щелкать левой клавишей мыши по необходимым файлам, а отпускать клавишу Ctrl можно только после выбора последнего из них, в противном случае, придется повторить процедуру. Выделенные файлы будут иметь синий цвет.
    • Существует вариант построчного выделения файлов из папки. Выбираем в списке необходимый файл левой кнопкой мыши, а затем нажмите клавишу Shift и с помощью кнопок клавиатуры со стрелками Вверх и Вниз выберите нужное количество строк. Когда выберите последний файл отпустите клавишу Shift. Чтобы выбрать файлы с точностью до одного, стоит использовать клавиши Вправо и Влево.

Microsoft разработал специальную систему Флажков для выбора нескольких элементов. Такую функцию можно встретить во всех версиях операционных систем Windows, начиная с Vista. Чтобы выделить несколько файлов в Windows 8 необходимо:

  1. Открыть папку с файлами.
  2. Чтобы активировать функцию выбора файлов с помощью флажков необходимо в разделе Вид поставить галочку на Флажки элементов.
  3. После этого при наведении курсора на файл рядом с ним будет появляться пустой квадратик, при нажатии на который появиться галочка. Таким образом можно выделять несколько элементов. Если Вид настроен на эскизы, то квадратик будет отображаться в левом верхнем углу, если файлы расположены списком или таблицей, то квадратик появится слева от файла.

В операционных системах Windows Vista и Windows 7 система флажков включается немного сложнее:

  1. Если в проводнике не активно отображение строки меню, то его необходимо активировать. Следует в левом верхнем углу проводника нажать кнопку Упорядочить, выбрать Представление и нажать на опцию Строка меню.
  2. Теперь строка меню появилась и в ней необходимо выбрать раздел Сервис, в котором выбрать пункт Параметры папок и нажать левую кнопку мыши.
  3. В появившемся окне найдите вкладку Вид и отметьте галочкой напротив строки Использовать флажки для выбора элементов.
  4. Затем завершающий этап настройки. Нажмите кнопку Применить, а затем Ок. Теперь все изменения сохранены и окно настройки параметров закрыто.

Мы рассмотрели несколько способов одновременного выделения файлов в разных операционных системах. Не забывайте, что при решении всевозможных задач можно пользоваться любым из предложенных способов. И только Вам решать какой способ наиболее быстрый, удобный и практичный в каждой конкретной ситуации.

Как удалить ненужные папки с компьютера

Для того чтобы удалить уже ненужную вам папку с компьютера требуется выделить объект для удаления наведя на него курсор мыши.

Выделение папки

Вызвать контекстное меню нажатием правой кнопкой мыши. Выбрать из списка «Удалить» и нажать левую кнопку мыши.

Удаление папки с помощью контекстного меню

После этих действий она попадет в корзину.

Ярлык корзины на рабочем столе

Очистить корзину очень легко. Для этого наводим курсор мыши на иконку и вызываем контекстное меню правой кнопкой. И нажимаем «Очистить корзину».

Очистка корзины

Все элементы, находящиеся в корзине, будут удалены с компьютера.

Есть одно исключение из правил — это когда папка по размеру больше чем размер отведенный для корзины.

В этом случае система предложит сразу полностью удалить ее. В открывшемся окне жмем «Да».

Безвозвратное удаление

Что делать если папка не удаляется

Теперь давайте поговорим о сложностях, которые могут возникнуть при удалении папок с компьютера. В результате чего у пользователей возникают следующие вопросы:

  1. Почему не удаляется пустая папка с компьютера?
  2. Почему не удаляется папка с компьютера, пишет, что используется?

Такие ситуации могут возникать в следующих случаях:

  1. У вас нет доступа для выполнения удаления.
  2. Она открыта в проводнике, или файлы, которые в ней находятся, используются программами, которые установлены на ваш ПК.

В первом случае нужно зайти в систему с правами администратора или попросить админа дать вам доступ для удаления.

Во втором случае требуется закрыть открытую папку и завершить работу программ, в которых открыты файлы.

Также можно в диспетчере задач завершить процессы, связанные с нужной папкой.

Для этого нам помогут горячие клавиши CTRL+SHIFT+ESC, при нажатии которых откроется диспетчер задач, где в процессах нужно найти проводник и завершить нужные процессы.

Вот небольшой пример с папкой, где находится документ, открытый в программе Word. В диспетчере придется завершить два процесса.

Процессы в диспетчере задач

Если вы не знаете в каких программах открыты файлы, или у вас не получается разобраться с диспетчером задач просто перезагрузите компьютер.

После перезагрузки удалите директорию с помощью компьютерной мыши.

Способ 1. Использование функции Dir

Этот способ хорош тем, что в данном случае мы не подключаем дополнительных библиотек, а пользуемся только предустановленным функционалом. Способ подойдет, если вам необходимо просто получить список файлов в папке и не нужно выводить их размер, определять тип файла, дату его создания/изменения и т.п. Тут мы получаем только наименования файлов и больше ничего.

Вот там код данной функции, который выводит на лист 1 перечень файлов.

'**************************************************************
' Sub            : ExampleOne
' Author         : Алексей Желтов
' Date           : 15.06.2020
' Purpose        : Вывод всех файлов в папке на лист
'**************************************************************
Sub ExampleOne()

    Dim Sh As Worksheet
    Dim Folder As String
    Dim FileName As String
    Dim i As Long

    Set Sh = ThisWorkbook.Sheets(1)
    Folder = Sh.Cells(3, 2)

    ' Проверка корректности введенных данных
    If PathExists(Folder) = False Then
        MsgBox "Указанной папки не существует", 16, "Ошибка исходных данных"
        Exit Sub
    End If

    ' Удаляем содержимое
    Sh.Rows("7:" & Sh.Range("A7").End(xlDown).Row).Delete Shift:=xlUp
    
    i = 7
    FileName = Dir(Folder & "/", vbNormal)
    Do While FileName <> ""
        Sh.Cells(i, 1) = i - 6
        Sh.Cells(i, 2) = FileName
        i = i + 1
        
        ' переход к следующему файлу
        FileName = Dir
    Loop

End Sub

Тут мы проверяем существование папки с помощью дополнительной функции. Опять таки не используем сторонних библиотек, а используем туже функцию Dir.

'**************************************************************
' Function       : PathExists
' Author         : Алексей Желтов
' Date           : 15.06.2020
' Purpose        : Возвращает ИСТИНА если путь pname существует
'**************************************************************
Private Function PathExists(pname As String) As Boolean
    On Error Resume Next
    If Dir(pname, vbDirectory) = "" Then
        PathExists = False
    Else
        PathExists = (GetAttr(pname) And vbDirectory) = vbDirectory
    End If
End Function

Вот так выглядит результат работы функции. Программа записала список файлов на текущий лист Excel.

Здесь мы не делали проверку на тип файла и вывели все файлы которые у нас были. 

Если же необходимо отобрать только определенные типы файлов, например Excel файлы, то в нашем коде необходимо сделать дополнительную проверку:

    Do While FileName <> ""
    
        If LCase(FileName) Like "*xls*" Then
            Sh.Cells(i, 1) = i - 6
            Sh.Cells(i, 2) = FileName
            i = i + 1
        End If
        ' переход к следующему файлу
        FileName = Dir
    Loop

Знак «*» означает любой набор символов. Таким образом, мы учли различные версии файлов Excel (xls, xlsx, xlsm).

Решение

Сообщение от BaHXeLiSiHg

diadiavova, выдало ошибку в строке MessageBox, мол string.Join имеет несколько недопустимых аргументов.

Какой фреймворк используешь? Раньше (вроде до четвертого) этот метод мог принимать только строковый массив вторым аргументом, потом появилась перегрузка, с помощью которой можно использовать любые коллекции строк. Если пишешь под 3.5 например, то в массив можно преобразовать вызывав ToArray

C#
1
2
3
4
5
            if (folderBrowserDialog2.ShowDialog() == System.Windows.Forms.DialogResult.OK)
            {
                FileInfo files = new DirectoryInfo(folderBrowserDialog2.SelectedPath).GetFiles("*.in.txt");
                MessageBox.Show(string.Join("\n", files.Select((fi) => fi.FullName).ToArray()));
            }

Сообщение от BaHXeLiSiHg

создаёт список всех файлов с указанным названием из указанной папки?

Да, только если нужен список имен и не более, то лучше использовать Directory вместо DirectoryInfo

C#
1
2
3
4
5
            if (folderBrowserDialog2.ShowDialog() == System.Windows.Forms.DialogResult.OK)
            {
                string filenames = Directory.GetFiles(folderBrowserDialog2.SelectedPath, "*.in.txt");
                MessageBox.Show(string.Join("\n", filenames));
            }

Сообщение от BaHXeLiSiHg

Мне нужно каждый .тхт файл

Так .txt или .in.txt

Обрати внимание, что я использовал паттерн из твоего кода

Сообщение от BaHXeLiSiHg

передать в textBox1 и выполнить цикл.

Что это значит? Передать в текстбокс — не проблема, какой цикл и что значит передать каждый файл? Требуется какая-то обработка файла и последующая передача результата в текстбокс? А результаты обработки следующих файлов добавлять к уже существующему тексту? Проясни вот этот момент.

Сообщение от BaHXeLiSiHg

Подскажите, как приспособить этот алгоритм к каждому из файлов в полученном списке files?

Да все просто же: выделяешь код в отдельный метод, который принимает имя файла и выполняет обработку. Дальше, когда будет получен список файлов, их надо обойти в цикле и для каждого файла вызвать этот метод
Вот так будет выглядеть твой метод

C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
        void ProcessFile(string strFile)
        {
            if (!File.Exists(strFile))
                return;
 
            double X = new doubleNET.GetX;
            double Y;
            String currFile;
 
            textBox1.Text = "";
            textBox2.Text = "";
 
            // Загружаем текущий входной файл
            currFile = File.ReadAllLines(strFile);
            textBox1.Lines = currFile;
            txtLogs.AppendText("Загружен файл:\r\n" + Convert.ToString(strFile) + "\r\n");
 
            for (int i = ; i < NET.GetX; i++)
            {
                Xi = Convert.ToDouble(currFilei);
            }
        }

А вот так его надо будет вызывать

C#
1
2
3
4
5
6
7
8
9
            if (folderBrowserDialog2.ShowDialog() == System.Windows.Forms.DialogResult.OK)
            {
 
                string filenames = Directory.GetFiles(folderBrowserDialog2.SelectedPath, "*.in.txt");
                foreach (string fileName in filenames)
                {
                    ProcessFile(fileName);
                }
            }

1

Бизнес и финансы

БанкиБогатство и благосостояниеКоррупция(Преступность)МаркетингМенеджментИнвестицииЦенные бумагиУправлениеОткрытые акционерные обществаПроектыДокументыЦенные бумаги — контрольЦенные бумаги — оценкиОблигацииДолгиВалютаНедвижимость(Аренда)ПрофессииРаботаТорговляУслугиФинансыСтрахованиеБюджетФинансовые услугиКредитыКомпанииГосударственные предприятияЭкономикаМакроэкономикаМикроэкономикаНалогиАудитМеталлургияНефтьСельское хозяйствоЭнергетикаАрхитектураИнтерьерПолы и перекрытияПроцесс строительстваСтроительные материалыТеплоизоляцияЭкстерьерОрганизация и управление производством

Операция перемещения папок и файлов

Довольно распространённый тип операций с файлами и каталогами. Часто возникает необходимость переместить файлы или каталоги в другое место на жестком диске компьютера. Перемещая папку, следует помнить, что переместятся и все находящиеся в ней файлы и каталоги. В случае переноса файла следует учитывать, что если он требуется для работы какой-либо программы, она перестанет работать, так как будет искать его на старом месте. Перемещать можно множеством способов, давайте рассмотрим несколько.

Используя буфер обмена.

Выделить объект щелчком ЛКМ, чтобы он подсветился цветом. Дальше есть несколько вариантов, как можно поступить:

  • щелкнуть по нему ПКМ и выбрать пункт «Вырезать»
  • нажать комбинацию клавиш Ctrl+X
  • нажать кнопку «Вырезать» на панели инструментов или в меню Проводника выбрать «Правка» ⇒ «Вырезать». В зависимости от версии операционной системы вид, расположение меню и наличие кнопок несколько различается.

В результате этих действий объект станет блеклым и поместится в буфер обмена операционной системы Windows. Теперь надо открыть папку на жестком диске, куда вы хотите переместить объект и выполнить одно из действий:

  • щелкнуть на свободном месте ПКМ и выбрать пункт «Вставить»
  • нажать комбинацию клавиш Ctrl+V
  • нажать кнопку «Вставить» на панели инструментов или в меню Проводника выбрать «Правка» ⇒ «Вставить». В зависимости от версии операционной системы вид, расположение меню и наличие кнопок несколько различается.

Поздравляем, вы переместили ваш файл или папку в другое место. Тот же самый результат можно получить, если выделить объект и в меню Проводника выбрать «Правка» ⇒ «Переместить в папку» в открывшемся окне указать папку назначения и нажать «Переместить».

Используя перетаскивание.

Широко применяется в графических интерфейсах и буквально означает «тащи-и-бросай» или «drag-and-drop» по-английски. Чтобы его осуществить, надо открыть окно Проводника Windows с объектами для перетаскивания и рядом еще одно окно Проводника, куда вы хотите переместить данные. Удобнее всего, когда видны оба окна одновременно.

Щелкаете ЛКМ по файлу или папке, держа указатель мыши над выделенным объектом, нажимаете и удерживаете ЛКМ и перемещаете указатель мыши в соседнее окно Проводника, куда вы хотите перетащить объект. Когда перетаскиваемый объект будет над папкой назначения, отпускаете ЛКМ. Единственное, необходимо следить по значку перетаскиваемого объекта, что система собирается сделать, переместить или скопировать перетаскиваемый объект. Удержание при перетаскивании клавиши Shift указывает компьютеру, что необходимо переместить объект.

Способ 3. Создаем функцию, которая возвращает файлы в папке и подпапках

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

Итак перейдем к коду:

'**************************************************************
' Function       : GetFiles
' Author         : Алексей Желтов
' Date           : 15.06.2020
' Purpose        : Получение файлов из папок и подпапок
'**************************************************************
Public Function GetFiles(ByVal Path As String, Optional ByVal Filter As String = "*", Optional ByVal Nesting As Long = 100) As Collection
    Dim MainFolder As Folder
    Dim iFolder As Folder
    Dim iFile As File
    Dim FSO As New FileSystemObject
    Dim MainColl As New Collection
    Dim iColl As Collection
    Dim spltFilter() As String
    Dim i As Long
    
    Set MainFolder = FSO.GetFolder(Path)
    If MainFolder Is Nothing Then Exit Function
    spltFilter = Split(Filter, ",")
    
    ' Перебираем файлы
    For Each iFile In MainFolder.Files
        ' Игнорируем временные файлы
        If InStr(1, iFile.Name, "~") = 0 Then
            ' Проверяем фильтры файлов
            For i = 0 To UBound(spltFilter)
                If LCase(iFile.Name) Like "*" & LCase(spltFilter(i)) Then
                    MainColl.Add iFile, iFile.Path
                End If
            Next
        End If
    Next
    
    ' Перебираем вложенные папки
    If Nesting > 0 Then
        For Each iFolder In MainFolder.SubFolders
            ' рекурсивный вызов функции
            Set iColl = GetFiles(iFolder.Path, Filter, Nesting - 1)
            
            'добавляем файлы из вложенных папок
            For i = 1 To iColl.Count
                MainColl.Add iColl(i), iColl(i).Path
            Next
        Next
    End If
    
    Set GetFiles = MainColl
End Function

Разберем основные моменты этой функции. На вход она принимает один обязательный аргумент — это путь к папке Path. Также может принимать два необязательных параметра:

  • Filter — перечисление списка файлов, которые мы хотим получить. Перечислять необходимо через запятую, например «doc, xls*». Вы можете использовать символ «*» чтобы включить сравнение по шаблону. По умолчанию фильтр отсутствует и возвращаются все типы файлов.
  • Nesting — вложенность. Это максимальное число вложенных папок в которые «проваливается» алгоритм. По умолчанию равно 100.

В целом по алгоритму комментарии лишние, все должно быть понятно. Основной момент хочу обратить на строку 38.

        For Each iFolder In MainFolder.SubFolders
            ' рекурсивный вызов функции
            Set iColl = GetFiles(iFolder.Path, Filter, Nesting - 1)
            
            'добавляем файлы из вложенных папок
            For i = 1 To iColl.Count
                MainColl.Add iColl(i), iColl(i).Path
            Next
        Next

Тут мы рекурсивно вызываем эту же функцию. Т.е. получается что функция вызывает саму себя. И это происходит до тех пор пока либо не останется вложенных папок, либо не будет достигнут желаемый уровень вложенности.

Теперь когда наша функция готова, просто используем ее где нам требуется вот так:

'**************************************************************
' Sub            : ExampleThree
' Author         : Алексей Желтов
' Date           : 15.06.2020
' Purpose        : Вывод всех файлов в папке на лист
'**************************************************************
Sub ExampleThree()
    
    Dim Sh As Worksheet
    Dim FolderPath As String
    Dim iFile As File
    Dim i As Long
    Dim Coll As Collection
    Dim FSO As New FileSystemObject
    
    Set Sh = ThisWorkbook.Sheets(3)
    FolderPath = Sh.Cells(3, 2)
    
    Set Coll = GetFiles(FolderPath)
    
    For i = 1 To Coll.Count
        Set iFile = Coll(i)
        Sh.Cells(i + 6, 1) = i
        Sh.Cells(i + 6, 2) = iFile.Name
        Sh.Cells(i + 6, 3) = FSO.GetFolder(iFile.ParentFolder).Name
        Sh.Cells(i + 6, 4) = iFile.Type
        Sh.Cells(i + 6, 5) = iFile.DateCreated
        Sh.Cells(i + 6, 6) = iFile.Size
    Next
     
End Sub

Функция нам возвращает коллекцию файлов в папке и подпапках. Вот так:

Пример файлы можете скачать по кнопке ниже и использовать в своей работе. Оставляйте комментарии, буду рад на них ответить.

Как выделить файлы в ОС windows 7, 8 используя мышь и клавиатуру

Выделить в папке необходимые файлы можно несколькими способами:

1. Использовать сочетание шорткат «Ctrl» и «A», нажимая их на клавиатуре одновременно.

2. С помощью клавиш «Верх» и «Вниз» выделить первый документ, затем зажав клавишу «Shift», переходить от файла к файлу, выделяя все по порядку.

3. Выделить нижний файл из списка в папке, а затем одновременно нажать клавиши «Ctrl», «Shift» и «Home», после этого в папке выделятся все файлы одновременно.

4. Выделить первый файл, а затем зажав клавишу «Shift» выделить нижний файловый документ из списка в папке. При проведении данной манипуляции автоматически выделяются все файловые документы, расположенные между первым и последним выделенными файлами.

5. Для выделения файлов можно нажать функцию «Упорядочить», расположенную в верхнем левом углу панели инструментов, в ниспадающем окне выбрать и нажать команду «Выделить все».

Для выделения всех файлов в папке необходимо нажать сочетание клавиш Ctrl+A

6. Подведя курсор к любому свободному пространству и зажав левую клавишу на мышке, растянуть прямоугольник с выделяемой областью. Все файловые документы, расположенные в в прямоугольной области будут выделены.

Вид папки: Эскизы, Плитка, Значки, Список, Таблица

В верхнем меню окна “Вид” можно поставить галочку напротив “Эскизы страниц“.

Меню папки “Вид”

Режим “Эскизы страниц” позволяет просматривать графические файлы, не открывая их. Эскиз отображается вместо значка и показывает в уменьшенном виде изображение из файла.

В режиме эскизов меняется и представление папок. Если в папке имеются графические файлы, картинки выносятся на значок папки. На нем можно увидеть до четырех изображений, соответствующих последним по дате создания графическим файлам:

Значок папки с графикой

Режим “Плитка” – самый наглядный режим представления, выбираемый командой Вид – Плитка. Его используют, когда значков немного, а вид значка и подпись под ним одинаково важны. Рядом со значком отображаются дополнительные сведения об объекте, например, размер файла.

Режим “Значки” включается командой Вид – Значки. По наглядности он близок к режиму плитки. Объекты представлены компактнее, так что значки удобны в окнах небольшого размера.

Режим “Список” включается командой Вид – Список. Он является наиболее компактным, размер значков минимален и объекты различают по подписям.  Обычно я предпочитаю именно этот режим из-за его компактности размещения информации.

Режим “Таблица” (Вид – Таблица) наиболее информативен. Таблица содержит несколько столбцов с подробной информацией о каждом объекте. Например, для файлов обычно отображается тип, размер и дата последнего изменения.

Комбинация os и fnmatch

Решение, использующее подпроцессы, элегантно, но требует большого количества кода. Вместо этого, давайте объединим методы из двух модулей os и fnmatch. Этот вариант также работает с Python 2 и 3.

В качестве первого шага, импортируем модули os и fnmatch. Далее определим каталог, в котором нужно перечислить файлы, используя os.listdir(), а также шаблон для фильтрации файлов. В цикле for выполняется итерация списка записей, хранящихся в переменной listOfFiles.

В завершение, с помощью fnmatch отфильтровываются искомые записи и распечатываются соответствующие записи в stdout.

Результат выполнения

Использование командной строки, через subprocess

Модуль subprocess позволяет выполнить системную команду и собрать её результат. В нашем случае вызываемая системная команда выглядит следующим образом:

Инструкция ls -p . распечатывает список файлов текущего каталога, добавляя разделитель / в конце имени каждого подкаталога, которые нам понадобится на следующем шаге. Вывод этого вызова передается команде grep, которая отфильтровывает данные по мере поступления.
Параметры -v / $ исключают все имена записей, которые заканчиваются разделителем /. Фактически / $ — регулярное выражение, которое соответствует всем строкам, содержащим символ / самым последним символом в строке, который определяется символом $.

Модуль subprocess позволяет строить настоящие конвейеры, а также соединять входные и выходные потоки, как это делается в командной строке. Вызов метода subprocess.Popen() открывает соответствующий процесс и определяет два параметра stdin и stdout.

Первая переменная ls определяет процесс выполнения ls –p для захвата stdout в конвейере. Поэтому поток stdout определяется как subprocess.PIPE. Вторая переменная grep также определяется как процесс, но вместо этого выполняет инструкцию grep –v /$.

Чтобы прочитать вывод команды ls из конвейера, поток stdin grep присваиваивается в ls.stdout. В заключение, переменная endOfPipe считывает вывод команды grep из grep.stdout, затем распечатывается в stdout циклом for.

Запуск файла

Данное решение работает достаточно хорошо с Python 2 и 3, но его можно улучшить. Рассмотрим другие варианты.

Вывод

Ведутся споры, какой вариант является лучшим, какой наиболее элегантным и какой является наиболее «питоничным». Мне нравится простота метода os.walk(), а также модули fnmatch и pathlib.

Две версии с процессами/конвейером и итератором требуют более глубокого понимания процессов UNIX и знаний Python, поэтому они не могут быть предпочтительными для всех программистов из-за их дополнительной (и избыточной) сложности.

Чтобы найти ответ на этот вопрос, выберем самой быстрой из них, воспользовавшись удобным модулем timeit. Данный модуль подсчитывает время, прошедшее между двумя событиями.

Для сравнения всех решений без их изменений, воспользуемся функциональностью Python: вызовем интерпретатор с модулем timeit и соответствующим Python скриптом. Для автоматизации процесса напишем shell скрипт

Тесты проводились с использованием Python 3.6. Среди всех тестов os.walk() показала себя наилучшим образом. Выполнение тестов с помощью Python 2 возвращает разные значения, но os.walk() по-прежнему находится на вершине списка.

Рейтинг автора
5
Материал подготовил
Максим Иванов
Наш эксперт
Написано статей
129
Ссылка на основную публикацию
Похожие публикации