Concerning your code in the question.
Your command should have worked as is. You are, in fact, already calling Get-ChildItem
. If you check Get-Alias
you will see what I’m trying to tell you.
PS C:\users\Cameron\Downloads> Get-Alias dir
CommandType Name ModuleName
----------- ---- ----------
Alias dir -> Get-ChildItem
You code translates to
Get-ChildItem -Recurse "C:\temp" | Select Fullname
Again, I’m not sure why your code does not generate output since that is perfectly fine on a folder that contains files or directories. Might be an issue with the positional parameter maybe? What is your PowerShell version? ( Use Get-Host
).
The code you have would send all file paths to console. Did you want that output somewhere else?
About the accepted answer
Pretty sure this code will double up output if you have folders in the path since directory will output to the second Get-ChildItem
Dir -Recurse c:\path\ | Get-Childitem
Consider the following folder tree
C:\TEMP\TEST
│ File1.txt
│ File2.txt
│
└───Folder1
File3.txt
Consider the two command run against that folder tree.
PS C:\users\Cameron\Downloads> Dir -Recurse c:\temp\test | Select Fullname
FullName
--------
C:\temp\test\Folder1
C:\temp\test\File1.txt
C:\temp\test\File2.txt
C:\temp\test\Folder1\File3.txt
PS C:\users\Cameron\Downloads> Dir -Recurse c:\temp\test | Get-Childitem | Select Fullname
FullName
--------
C:\temp\test\Folder1\File3.txt
C:\temp\test\File1.txt
C:\temp\test\File2.txt
C:\temp\test\Folder1\File3.txt
The second command shows two files called File3.txt
when in reality there is only one.
Когда ко мне обратились с вопросом о том, как быстро вывести список файлов в текстовый файл, я понял, что ответа я не знаю. Хотя задача, как оказалось, достаточно часто встречающаяся. Это может потребоваться для передачи списка файлов специалисту (для решения какой-то проблемы), самостоятельного ведения журнала содержимого папок и других целей.
Решено было устранить пробел и подготовить инструкцию на эту тему, в которой будет показано, как получить список файлов (и вложенных папок) в папке Windows средствами командной строки, а также о том, как автоматизировать этот процесс, если задача возникает часто.
Получение текстового файла с содержимым папки в командной строке
Сначала о том, как сделать текстовый документ, содержащий список файлов в нужной папке, вручную.
- Запустите командную строку от имени администратора.
- Введите cd x:\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 в третьей строке и полностью убрав четвертую.
Concerning your code in the question.
Your command should have worked as is. You are, in fact, already calling Get-ChildItem
. If you check Get-Alias
you will see what I’m trying to tell you.
PS C:\users\Cameron\Downloads> Get-Alias dir
CommandType Name ModuleName
----------- ---- ----------
Alias dir -> Get-ChildItem
You code translates to
Get-ChildItem -Recurse "C:\temp" | Select Fullname
Again, I’m not sure why your code does not generate output since that is perfectly fine on a folder that contains files or directories. Might be an issue with the positional parameter maybe? What is your PowerShell version? ( Use Get-Host
).
The code you have would send all file paths to console. Did you want that output somewhere else?
About the accepted answer
Pretty sure this code will double up output if you have folders in the path since directory will output to the second Get-ChildItem
Dir -Recurse c:\path\ | Get-Childitem
Consider the following folder tree
C:\TEMP\TEST
│ File1.txt
│ File2.txt
│
└───Folder1
File3.txt
Consider the two command run against that folder tree.
PS C:\users\Cameron\Downloads> Dir -Recurse c:\temp\test | Select Fullname
FullName
--------
C:\temp\test\Folder1
C:\temp\test\File1.txt
C:\temp\test\File2.txt
C:\temp\test\Folder1\File3.txt
PS C:\users\Cameron\Downloads> Dir -Recurse c:\temp\test | Get-Childitem | Select Fullname
FullName
--------
C:\temp\test\Folder1\File3.txt
C:\temp\test\File1.txt
C:\temp\test\File2.txt
C:\temp\test\Folder1\File3.txt
The second command shows two files called File3.txt
when in reality there is only one.
При работе на компьютере иногда возникает необходимость получить полный список файлов и папок в каталоге или даже целом томе. Понадобиться он может для самых разных целей, например, для каталогизации, для сравнения, для использования в какой-то базе данных и так далее. В большинстве случаев приходится иметь дело с большим числом объектов, поэтому нечего и думать, чтобы составить такой список вручную.
Если создание списка файлов вручную представляется едва ли возможным, то какая есть тому альтернатива, какие программные инструменты лучше всего подойдут для этих целей? Решений существует несколько, все они очень просты и удобны. Получить список файлов и папок можно с помощью обычной командной строки, с помощью PowerShell, штатного Проводника, любого браузера, а также с помощью сторонних специализированных утилит.
Содержание статьи:
Получаем список файлов и папок в командной строке
Для чтения содержимого каталогов в старой доброй командной строке предусмотрена команда dir, её то как раз мы и будем использовать. Итак, запускаем консоль CMD, командой cd Буква диска:/путь (если нужно перейти в другой диск, добавляем после cd ключ /d) переходим в нужное расположение и выполняем эти две команды:
chcp 1251 dir /b /s > D:\filelist.tхt
Первая команда устанавливает кириллическую кодировку, вторая сохраняет список всех файлов, папок и вложенных в них объектов в текстовый лог на диске D.
Если нужно получить список только файлов (без вложенных каталогов), достаточно использовать только ключ /b.
Примечание: в Windows 8.1 и 7 для быстрого перехода в папку в командной строке, зажмите Shift, кликните ПКМ по папке и выберите в контекстном меню опцию «Открыть окно команд».
Список файлов и папок в PowerShell
В Windows 10 командная строка заменена консолью PowerShell, для получения списка файлов можете использовать её. Для примера выведем в файл содержимое папки Тест с её подкаталогами:
Get-Childitem -Path D:\Тест -Recurse | Out-File D:\filelist.tхt
А можно и проще. Зажав Shift, кликаем по папке ПКМ, выбираем в меню «Открыть PowerShell здесь».
И выполняем в открывшемся окне консоли команду Get-Childitem -Recurse | Out-File D:\filelist.tхt.
Необходимость использования параметра -Path с указанием пути в данном случае отпадает.
Получение списка файлов или папок в Проводнике
Этот способ позволяет получить список либо файлов, либо папок в конкретном расположении. Заходим в целевую папку, выделяем в ней все файлы или папки, зажимаем Shift, кликаем правой кнопкой мыши и выбираем в меню опцию «Копировать как путь».
Пути и имена выделенных объектов будут переданы в буфер обмена, откуда вы уже сможете перенести их в текстовый файл.
Получение списка файлов с помощью DirLister
Для получения хорошо структурированного списка объектов файловой системы можно воспользоваться бесплатной портативной утилитой DirLister, скачав её с официального сайта:
www.barrysoft.it/blog/software/dirlister
Запустив утилиту, укажите в разделе «Directory To Scan» путь к сканируемому каталогу или диску, в разделе «Output File» выберите расположение для сохранения списка.
Здесь же можно задать параметры сканирования — выбрать формат, указать, нужно ли включать в список вложенные директории и скрытые объекты, задать поиск по маске. После нажатия кнопки «Make List» список будет сохранён в выбранном расположении.
Используем для получения списка файлов браузер
На худой конец для создания списка файлов и папок на диске можно воспользоваться любым браузером. Перетаскиваем папку или диск на новую вкладку браузера и получаем список имеющихся в ней файлов и каталогов.
Рекурсивно пройтись по всем вложенным каталогам, правда, не получится да и для копирования путей и имён файлов и переноса их в отдельный файл придется использовать Ctrl + C и Ctrl + V.
Загрузка…
0 / 0 / 0 Регистрация: 30.05.2017 Сообщений: 11 |
|
1 |
|
10.02.2018, 19:59. Показов 19469. Ответов 1
Здравствуйте, требуется помощь с задачами, которые нужно выполнить в PowerShell Вывести содержимое каталога Windows по указанному формату на экран и в текстовый файл: только файлы; сортировать по размеру; Размер >10000. Заранее большое спасибо, за помощь.
0 |
KDE777 1883 / 1106 / 427 Регистрация: 22.01.2016 Сообщений: 3,050 |
||||
11.02.2018, 11:46 |
2 |
|||
Сообщение было отмечено VadimAlekseev как решение Решение
Вывести содержимое каталога Windows по указанному формату на экран и в текстовый файл: только файлы; сортировать по размеру; Размер >10000.
1 |
IT_Exp Эксперт 87844 / 49110 / 22898 Регистрация: 17.06.2006 Сообщений: 92,604 |
11.02.2018, 11:46 |
Помогаю со студенческими работами здесь Создать текстовый файл с не менее 20 целых чисел в диапазоне от -10 до 20, вывести содержимое на экран диапазоне от -10 до 20…. Работа со строками (Создать текстовый файл, вывести содержимое на экран, определить длину каждого предложения) Создать папку User6 в корневом каталоге диска D и вывести в текстовый файл содержимое папки C:\Windows Вывести в текстовый файл таблицу по указанному правилу Вывести на экран содержимое каталога со всеми его подкаталогами Написать bat-файл, выдающий содержимое файлов с расширением txt из текущего каталога на устройстве с: на экран Искать еще темы с ответами Или воспользуйтесь поиском по форуму: 2 |