Прочитать полное содержание
Если вы хотите прочитать все содержимое текстового файла, самый простой способ — использовать встроенную функцию Get-Content. Вот код, который позволяет это сделать:
Get-Content C: logslog01012020.txt
Когда вы выполняете эту команду, содержимое этого файла будет отображаться на экране PowerShell ISE или командной строки, в зависимости от того, где вы выполняете.
Вы также можете переместить все содержимое в переменную и использовать эту переменную для дальнейшей обработки, если вы хотите, чтобы ваш код делал это.
$ file_data = Get-Content C: logslog01012020.txt
Теперь вы можете использовать эту переменную $ file_data для анализа или дальнейшей обработки.
Как получить список файлов в папке Windows
Когда ко мне обратились с вопросом о том, как быстро вывести список файлов в текстовый файл, я понял, что ответа я не знаю. Хотя задача, как оказалось, достаточно часто встречающаяся. Это может потребоваться для передачи списка файлов специалисту (для решения какой-то проблемы), самостоятельного ведения журнала содержимого папок и других целей.
Решено было устранить пробел и подготовить инструкцию на эту тему, в которой будет показано, как получить список файлов (и вложенных папок) в папке Windows средствами командной строки, а также о том, как автоматизировать этот процесс, если задача возникает часто.
Получение текстового файла с содержимым папки в командной строке
Сначала о том, как сделать текстовый документ, содержащий список файлов в нужной папке, вручную.
- Запустите командную строку от имени администратора.
- Введите cdx:\folder\ где x:\folder\ — полный путь к папке, список файлов из которой нужно получить. Нажмите Enter.
- Введите команду dir /a /-p /o:gen >files.txt (где files.txt — текстовый файл, в котором будет сохранен список файлов). Нажмите Enter.
- Если использовать команду с параметром /b (dir /a /b /-p /o:gen >files.txt), то в полученном списке будет отсутствовать любая дополнительная информация о размерах файлов или дате создания — только список имен.
Готово. В результате будет создан текстовый файл, содержащий необходимую информацию. В команде выше, данный документ сохраняется в той же папке, список файлов из которой требуется получить. Можно также убрать вывод в текстовый файл, в этом случае список будет отображаться только в командной строке.
Кроме этого, для пользователей русскоязычной версии Windows следует учитывать то, что файл сохраняется в кодировке Windows 866, то есть в обычном блокноте вместо русских символов вы увидите иероглифы (но можно использовать альтернативный текстовый редактор для просмотра, например, Sublime Text).
Получаем список файлов с помощью Windows PowerShell
Вы также можете получить список файлов в папке используя команды Windows PowerShell. Если вы хотите сохранить список в файл, то запустите PowerShell от имени администратора, если просто просмотреть в окне — достаточно простого запуска.
- Get-Childitem -Path C:\Folder — вывод списка всех файлов и папок, находящихся в папке Folder на диске C в окне Powershell.
- Get-Childitem -Path C:\Folder | Out-File C:\Files.txt — создание текстового файла Files.txt со списком файлов в папке Folder.
- Добавление параметра -Recurse к первой описанной команде выводит в списке также содержимое всех вложенных папок.
- Параметры -File и -Directory позволяют получить список только файлов или только папок соответственно.
Выше перечислены далеко не все параметры Get-Childitem, но в рамках описываемой в этом руководстве задачи, думаю, их будет достаточно.
Утилита Microsoft Fix it для печати содержимого папки
На странице https://support.microsoft.com/ru-ru/kb/321379 присутствует утилита Microsoft Fix It, добавляющая в контекстное меню проводника пункт «Print Directory Listing», выводящий список файлов в папке на печать.
Несмотря на то, что программа предназначена только для Windows XP, Vista и Windows 7, она успешно сработала и в Windows 10, достаточно было запустить ее в режиме совместимости.
Дополнительно, на той же странице показан порядок ручного добавления команды вывода списка файлов в проводник, при этом вариант для Windows 7 подойдет и для Windows 8.1 и 10. А если вам не требуется вывод на печать, вы можете немного подправить предлагаемые Microsoft команды, удалив параметр /p в третьей строке и полностью убрав четвертую.
Способ 1. Функция ДВССЫЛ
В простом случае можно использовать функцию ДВССЫЛ (INDIRECT), чтобы сформировать правильную ссылку на внешний файл. Например, если необходимо создать выпадающий список с содержимым ячеек А1:А10 с листа Список из файла Товары.xls, нужно открыть окно проверки данных через вкладку Данные – Проверка данных (Data – Validation) и в поле Источник (Source) ввести следующую конструкцию: =ДВССЫЛ(«Список!$A$1:$A$10») .
Чтобы сформировать правильную ссылку на внешний файл можно использовать функцию ДВССЫЛ
Функция ДВССЫЛ (INDIRECT) преобразует текстовую строку аргумента в реальный адрес, используемый для ссылки на данные
Обратите внимание, что имя файла заключается в квадратные скобки, а восклицательный знак служит разделителем имени листа и адреса диапазона ячеек. Если имя файла содержит пробелы, то его надо заключить в апострофы
Если файл с исходными данными для списка лежит в другой папке, необходимо указать полный путь к файлу, например, следующим образом: =ДВССЫЛ(«‘C:ПоставщикиСписок’!$A$1:$A$10») . В данном случае не забудьте заключить в апострофы полный путь к файлу и имя листа. Минус этого способа только один – выпадающий список будет корректно работать только в том случае, если файл Товары.xls открыт.
С помощью Directory Printer
Тем же, кто не хочет заморачиваться с командной строкой можем предложить специальную утилиту Directory Printer, как раз предназначенную для вывода содержимого каталога в текстовый файл TXT.
Помимо названий эта программа позволяет выводить различную дополнительную информацию, например, атрибуты, дату модификации, размер, расширение, версию и т.д. Так же имеется возможность фильтрации по разным параметрам.
Распространяется программка бесплатно, язык интерфейса имеет английский, поддерживает вывод данных непосредственно на принтер.
Скачать Directory Printer: http://www.karenware.com/powertools/ptdirprn.asp
Синтаксис и параметры команды DIR
dir атрибуты]]порядок_сортировки]] поле_сортировки]] , где
— Задание диска и каталога, список файлов которого будет выведен.
— Задание файла или группы файлов, сведения о которых требуется вывести.
/p — Постраничный вывод сведений, т. е. с паузой после заполнения экрана. Для продолжения просмотра необходимо нажать любую клавишу.
/q — Вывод сведений о владельце файла.
/w — Вывод сведений в несколько колонок до пяти имен файлов или каталогов в каждой строке.
/d — Соответствует /w, но с сортировкой по столбцам.
/a атрибуты] — Выводит имена только тех файлов и каталогов, которые имеют указанные атрибуты. Если параметр /a не указан, команда dir выводит имена всех файлов, за исключением системных и скрытых. Если параметр /a указан без атрибутов, команда dir выводит имена всех файлов, включая скрытые и системные. Ниже приведен список значений, которые могут быть использованы при задании параметра атрибуты. Двоеточие (:) является необязательным. Значения из таблицы могут использоваться в любых комбинациях без пробела между ними.
/o порядок_сортировки] — Управление порядком сортировки и вывода имен файлов и каталогов командой dir. Если параметр /o, не задан, команда dir выводит имена в том порядке, в котором они записаны в каталоге. Если параметр /o использован без параметра порядок_сортировки, команда dir выводит имена каталогов в алфавитном порядке, затем — имена файлов в алфавитном порядке. Двоеточие (:) является необязательным. Ниже приведен список значений, которые могут быть использованы при задании параметра порядок_сортировки. Допускается использование любого их сочетания без пробелов между ними.
/t поле_времени] — Задание поля времени для вывода и сортировки. Ниже приведен список значений, которые могут быть использованы при задании параметра поле_времени.
/s — Перечисление всех случаев обнаружения определенного имени файла в указанном каталоге и всех его подкаталогах.
/b — Перечисление каждого имени файла (включая расширение) или каталога на отдельной строке. При использовании параметра /b заголовочные сведения или сводка не выводятся. Параметр /b отменяет параметр /w.
/l — Вывод несортированного списка имен каталогов и имен файлов строчными буквами. Параметр /l не позволяет преобразовывать дополнительные символы в строчные.
/n — Вывод списка в расширенном формате с именами файлов в правой части экрана.
/x — Вывод сокращенных имен файлов файловых систем NTFS и FAT. Формат совпадает с форматом параметра /n, но сокращенные имена выводятся после полных.
/c — Вывод разделителя десятичных разрядов в размере файлов.
/? — Отображение справки в командной строке для команды DIR.
Примеры команды DIR
- Чтобы вывести подряд все каталоги в алфавитном порядке, в несколько колонок и с паузой после заполнения каждого экрана, убедитесь, что корневой каталог является текущим, и введите следующую команду: dir /s/w/o/p
- Команда dir выводит имя корневого каталога, имена его подкаталогов и имена файлов (включая расширения) в этом каталоге. Затем выводятся имена подкаталогов и имена файлов в каждом каталоге дерева каталогов.
- Для изменения предыдущего примера так, чтобы команда dir не выводила имена каталогов, введите следующую команду: dir /s/w/o/p/a:-d
- Чтобы напечатать список каталогов, введите следующую команду: dir > prn. Если указать параметр prn, список каталогов отправляется на принтер, подключенный к порту LPT1. Если принтер подключен к другому порту, необходимо заменить параметр prn именем этого порта.
- Вывод команды dir также может быть направлен в файл при замене prn на имя файла. Кроме того, можно также ввести путь. Например, для направления вывода команды dir в файл Dir.doc в каталоге Records введите следующую команду: dir > \records\dir.doc. Если файл Dir.doc не существует, команда dir создаст его при условии наличия каталога Records.
- Чтобы вывести список всех файлов с расширением .txt во всех каталогах диска C, введите следующую команду: dir c:\*.txt /w/o/s/p.
Рекомендуем для просмотра:
- FINDSTR — команда поиска по образцу — 05/07/2010 08:27
- FIND — команда поиска заданной строки — 05/07/2010 08:24
- TYPE — команда вывода содержимого файла — 05/07/2010 06:55
Создаем текстовый файл со списком файлов в командной строке
Для того чтобы выведенный список сохранить в текстовый файл, используется специальный символ перенаправления потока «>» (без кавычек).
- Откройте командную строку в необходимой папке.
- Введите «dir > listmyfolder.txt» (без кавычек) и нажмите Enter. Весь список сохранится в файле «listmyfolder.txt».
- Если вам необходимо так же сохранить файлы и из всех вложенных каталогов, то используйте команду «dir /s > listmyfolder.txt» (без кавычек)
Файл «listmyfolder.txt» будет создан в той же папке, в которой вы находитесь. Небольшой уточнение по поводу файла, вы можете называть его как вам будет угодно, задавать ему абсолютно любое расширение. Каких-то специальных ограничений нет, кроме тех, что требует система Windows к названиям файлов. Так же вы можете использовать полные пути, для сохранения списка в другом каталоге. Например, вы хотите сохранить файл на диске «F:» в каталоге «list». Для этого вам необходимо будет использовать такую команду «dir > F:\list\listmyfolder.txt» (без кавычек). Как видите ничего сложно нет.
Сохранение списка в текстовый файл
Создание списка файлов и папок важно для тех, кто работает с большим количеством данных и ищет эффективный способ организации информации. После формирования такого списка его можно сохранить в текстовый файл, чтобы в дальнейшем была возможность быстро находить нужные файлы и папки
Для сохранения списка можно воспользоваться различными способами в зависимости от вашей задачи и уровня опыта в работе с ПК. Вы можете воспользоваться командной строкой и PowerShell, которые позволяют автоматизировать процесс сохранения списка в текстовый файл.
Также для сохранения списка файлов и папок можно использовать специальные программы. Такие приложения позволяют не только быстро получить список, но и настроить его параметры, выбрать тип и форматирование файла для сохранения информации. Это удобно для тех, кто занимается регулярным формированием списков.
Широкий выбор инструментов для получения и сохранения списка файлов и папок позволяет выбрать оптимальное решение для каждой задачи. Будь то использование PowerShell или качественная программа с обширным функционалом, вы всегда сможете быстро и эффективно формировать списки, ушедшись от лишнего временных затрат и повторных действий.
Написание BAT файлов
В этой статье я приведу несколько примеров написания BAT-файлов. Рассмотрим команды для того, чтобы изменить системную дату, запустить и отключить службу windows, запустить программу, вывести сообщение для пользователя.
Чтобы создать исполнительный файл в операционной системе windows достаточно всего двух действий:
- Выбираем папку расположение будущего bat-файла
- Щелкаем правой кнопкой мыши и выбираем: создать > текстовый документ
- Задаем название файлу и меняем расширение .txt на .bat, например должно получиться «file.bat». Соглашаемся на изменение расширения, нажимаем «Да»
Всё! Исполнительный файл готов. Осталось только добавить в него команды. Для этого нажимаем по нему правой кнопкой мыши и выбираем «изменить». В открывшемся окне текстового редактора и вводятся команды.
Вывод текстовых сообщений
Для вывода текста на экран существует команда ECHO. После команды пишем текст для вывода. Например, в bat файле записываем строки:
Команду PAUSE даём для того, чтобы окно не закрывалось автоматически после выполнения ECHO, а ожидало нажатия любой клавиши для выхода.
Как видно из рисунка текст выводится, но есть проблемы с кодировкой. Для отображения русских символов добавим в самое начало команду Chcp <код_кодировки>. Приведу пример кодировок:
- 1251 – Windows (кириллица);
- 866 – DOC-кодировка;
- 65001 – UTF-8;
Изменим код нашего исполнительного файла на такой:
Команда @echo off служит для отключения вывода адреса и текста самой команды. Русский текст отображается.
Ввод данных пользователем
Часто для решения каких-либо задач требуется вручную задать значения переменных. Рассмотрим такой пример, исполнительный файл спрашивает имя пользователя, далее выводит текст «привет <имя>».
Командой SET мы создаем переменную input и присваиваем ей значение введенное пользователем. Для вывода значения переменной заключаем её имя в знак %.
Включения и выключение служб windows
Иногда встречаются ситуации, когда службы программ конфликтуют между собой. Например такая ситуация наблюдается с программами TecDoc и ETK BMW (это каталоги автомобильных запчастей, ошибка службы Transbase). Пока запущена служба одной программы — не запустится служба второй, а следовательно и сама программа. Ситуация решается несколькими строчками в исполнительном файле:
Команды net stop и net start выключают и включают службы windows. Команда start «» <путь> запускает программу. Таким образом если включена мешающая программе служба, то она выключится и запустится нужная, и только после этого произойдёт запуск программы. Создаем второй исполнительный файл, меняем службы местами и прописываем пусть к второй программе. Готово! У вас два bat файла, ими и нужно запускать программы. Единственный минус такого решения — это невозможность одновременного использования обоих программ.
Февраль 18th, 2016|Программирование|
Получить список файлов в папке
Для получения списка файлов можно воспользоваться методом GetFiles.
Пример поиска файлов:
string[] allfiles = Directory.GetFiles(PathToFolder);foreach (string filename in allfiles){ Console.WriteLine(filename);}
Метод GetFiles может принимать 3 параметра, из которых первый обязательный:
GetFiles(String path, String pattern, SearchOption options)
path – путь к папке, в которой ищем файлы;
pattern – шаблон поиска файлов (например, *.txt или ??abc.doc);
options – способ поиска, указывающий нужно искать только в текущей папке (SearchOption.TopDirectoryOnly) или во вложенных тоже (SearchOption.AllDirectories).
Пример поиска файлов по шаблону смотрите ниже (рекурсивный поиск).
Если список файлов очень большой, тогда лучше воспользоваться методом EnumerateFiles (доступен в .NET Framework 4.0 и выше), т.к. в отличие от GetFiles он возвращает IEnumerable и заполняет его как бы асинхронно, т.е. можно приступить к перебору списка файлов сразу, не дожидаясь получения всего списка и тем самым увеличить скорость обработки полученных файлов.
Метод EnumerateFiles так же может принимать 3 параметра:
path – путь к папке, в которой ищем файлы;
pattern – шаблон поиска файлов;
options – способ поиска.
Пример поиска файлов методом EnumerateFiles:
IEnumerable allfiles = Directory.EnumerateFiles(PathToFolder);foreach (string filename in allfiles){ Console.WriteLine(filename);}
Как видим, поиск методом EnumerateFiles аналогичен GetFiles, однако, он начнется сразу, до получения всего списка файлов, что может быть актуальным при очень большом количестве файлов.
Имена всех файлов в папке в текстовый файл в ОС Linux
В ОС Linux есть аналогичная команда, которая
тоже выполняется в терминале (консоли):
ls -p | grep -v ‘/$’ > filename.txt
Эта команда расшифровывается так:
-
ls — команда, которая показывает
содержимое текущего или указанного каталога. Но, в отличии от команды
Windows, в этой команде нет опции, которая
«отсекает» имена папок. Поэтому нужно использовать обходной путь, для
получения только имен файлов. -
-p — опция, которая добавляет слэш к именам папок. Это нужно
для того, чтобы «отсечь» имена папок. -
| — перенаправление вывода команды ls
в команду grep. -
grep — команда, которая обрабатывает входной поток и выбирает
из него элементы, по заданным условиям. - -v ‘/$’ — условие для удаления имен папок.
-
> filename.txt — перенаправление
вывода команды в текстовый файл вместо экрана.
Таким образом получается следующее:
Команда ls выдает список файлов и папок и
перенаправляет этот список в команду grep. Команда grep, удаляет из этого
списка имена папок.
Если нужно выбрать файлы из вложенных папок, тогда в команду
ls нужно добавить опцию /R:
ls -p -R | grep -v -e ‘/$’ -e ‘^./’ -e ‘^.:’ >
filename.txt
Дополнительные OR (ИЛИ)
условия команды grep нужны для удаления имен вложенных папок.
Поделитесь этим сайтом с друзьями!
Если вам оказалась полезна или просто понравилась эта статья, тогда не стесняйтесь — поддержите материально автора. Это легко сделать закинув денежек на Яндекс Кошелек № 410011416229354. Или на телефон +7 918-16-26-331.
Даже небольшая сумма может помочь написанию новых статей
Или поделитесь ссылкой на эту статью со своими друзьями.
Получение списка файлов из папки в текстовом виде
Для определённых целей может потребоваться составить список файлов, содержащихся в папке. Если таковых немного, то задачу можно выполнить вручную без особых затруднений, но если в папке десятки, сотни или даже тысячи файлов, то пытаться составить их список вручную это бесполезная трата времени. Можно ли этот процесс как-то автоматизировать?
Автоматическое создание списка файлов
К счастью, функционал Windows и других программных решений, позволяет создавать списки файлов в папках в автоматическом порядке. Данные списки можно потом будет без проблем скопировать в текстовый файл и редактировать по мере необходимости.
Рассмотрим все имеющиеся способы создания такого списка.
Вариант 1: «Командная строка»
Этот способ является стандартным и не требует от пользователя каких-либо особых умений, за исключением базового владения «Командной строкой». Итак, инструкция к данному варианту выглядит следующим образом:
- Перейдите в ту папку, список файлов из которой вы хотели бы получить.
- Теперь зажмите Shift на клавиатуре и нажмите правой кнопкой мыши по пустому месту в окне «Проводника».
- Должно появится контекстное меню, где требуется выбрать вариант «Запуск командной строки» или «Открыть окно команд здесь». В случае с последними версиями Windows 10 такого пункта может не быть. Вместо этого нужно нажать на «Запустить окно PowerShell здесь». PowerShell – это новый аналог «Командной строки», который Майкрософт активно внедряет в последние версии Windows 10. По сути отличий в функционале нет никаких.
- dir /b>spisok.txt Данная команда сохраняет только имена файлов в файл spisok.txt. Вы можете вместо него указать любое другое название, какое вам будет удобно, но учтите, что оно не должно содержать кириллических символов;
- dir /s>spisok.txt Сохраняет не только имена файлов, содержащихся в папке, но и имена папок и подпапок, которые могут быть расположена в основной папке.
Всю информацию из него можно скопировать в документ Word, так как последний удобнее редактировать. К тому же, если в папке содержались файлы или другие папки в названии которых присутствовали кириллические символы, то в «Блокноте» таковые могут отображаться некорректно, так как нужные кодировки не поддерживаются.
Вариант 2: Использование BAT-файла
Данный способ тоже не отличается какой-либо сложностью, плюс даёт почувствовать себя немного программистом. Суть заключается в создании специального файла с алгоритмом, который выведет список всех элементов в папке в отдельный текстовый файл. Итак, рассмотрим инструкцию к этому варианту более подробно:
- Создайте в любом месте на компьютере текстовый файл. Для этого нажмите правой кнопкой мыши и в меню выберите пункт «Создать». Из открывшегося подменю выберите вариант «Текстовый файл».
echo %date% %time% >spisok.txt
Содержимое данного файла также можно перенести в текстовый документ MS Word. Однако в этом случае проблем с кодировкой и неверным отображением кириллических символов не наблюдается.
Вариант 3: DirLister
Данное бесплатное ПО не требуется установки на компьютер и с его помощью вы можете создать список всех элементов в той или иной папке. Инструкция по её использованию выглядит следующим образом:
Вариант 4: Total Commander
Total Commander – это популярный файловый менеджер, где пользователь может быстро получить и скопировать всю основную информацию о файлах, а также о содержимом папок. В данном случае получить список файлов, находящихся в папке, можно следующим образом:
- В окне Total Commander откройте нужную папку.
- В верхнем меню нажмите на пункт «Выделение». Появится контекстное меню, где нужно нажать на вариант «Выделить всё».
- Затем в этом же меню выберите пункт «Копировать имена файлов в буфер обмена».
Вариант 5: Браузер
Во всех современных браузерах, будь то Opera, Google Chrome, Yandex и т.д., есть функция просмотра содержимого папок и некоторых файлов, расположенных на компьютере.
Инструкция к этому варианту выглядит следующим образом:
- Откройте «Проводник». Выберите при помощи щелчка левой кнопкой мыши ту папку, которую хотите просмотреть в браузере.
- Перетащите эту папку в любой удобный для вас браузер. В данном случае рассматривается вариант с Opera.
Это были все способы, позволяющие вывести список содержимых в папке файлов в отдельный текстовый документ.
Читать построчно
Если вы хотите прочитать файл, чтобы понять его содержимое, вы должны делать это построчно, и хорошая новость в том, что это возможно с помощью PowerShell. На самом деле, есть 2 способа сделать это.
Используйте Get-Content
Функция Get-Content считывает каждую строку текста и сохраняет их как массив, где каждая строка является элементом массива. В приведенном выше примере статья использовала одну переменную для чтения всего содержимого.
$ file_data = Get-Content C: logslog01012020.txt
Если вывод этой переменной, вы можете увидеть, что это массив. Это означает, что вы можете выбирать определенные строки, используя индекс массива. Например, если вы хотите прочитать первую строку, просто введите:
$ file_data
И эта команда покажет вам первую строку.
$ file_data
Эта команда отобразит вторую строку (как и следующую строку).
Используйте класс StreamReader
Второй вариант — использовать класс .NET под названием StreamReader.
$ stream_reader = новый объект System.IO.StreamReader {C: logslog01012020.txt}
Теперь у вас есть содержимое файла журнала в этой переменной $ stream_reader, и, поскольку он принадлежит классу StreamReader, вы можете использовать множество встроенных методов для получения нужного текста.
По мере ввода:
$ stream_reader.ReadToEnd ()
Команда выведет весь контент на ваш экран, аналогично Get-Content.
Чтобы прочитать текущую строку, вы можете использовать следующий метод:
$ stream_reader.ReadLine ()
Но сама по себе эта команда может оказаться бесполезной, поэтому вам придется запускать ее в цикле и читать содержимое текстового файла построчно.
$ stream_reader = New-Object System.IO.StreamReader {C: logslog01012020.txt} $ line_number = 1 while (($ current_line = $ stream_reader.ReadLine ()) -ne $ null) {Write-Host «$ line_number $ current_line» $ line_number ++}
Приведенный выше код начинается с первой строки и выводит каждую строку с количеством строк, прикрепленных для удобства чтения. Вы даже можете использовать любой из доступных строковых методов в переменной $ current_line для дальнейшего анализа.
Этот метод идеально подходит для чтения больших файлов, поскольку при сохранении содержимого в переменной он может занимать слишком много памяти и влиять на производительность. Так что это более эффективный способ получить нужный контент.