Мне нужен иерархический список всех файлов вместе с расширенными подробностями файла.

Мой вопрос похож на Как я могу экспортировать структуру каталогов? Оба ответа с упоминанием дерева и команд Get-ChildItem хороши для меня, но я просто хочу добавить к каждому элементу Расширенные сведения о файле.

Расширенные детали файла, которые я хочу:

  • Полный путь (например, I:\MS\Ly\Video\122453.mp4)
  • Тип файла (в формате EXT - ОПИСАНИЕ, например, MP4 - MPEG-4 video files)
  • Размер (например, 21.78 MB) (Кроме того, мне нужно показать это в байтах)
  • Создано (Дата создания файла, например, 21-Nov-17 1:45:15 AM).
  • Изменено (Дата изменения файла, например, 21-Nov-17 1:45:17 AM).
  • Доступ (Дата последнего доступа к файлу, например, 23-Nov-17 2:30:03 PM)

Пример расширенной информации о файле, которую я могу получить из контекстного меню в утилите Bulk Rename:

Filename    Parent Folder   Full Path   File Type   Size    Created Modified    Accessed
122453.mp4  Video   I:\MS\Ly\Video\122453.mp4   MP4 - MPEG-4 video files    21.78 MB    21-Nov-17 1:45:15 AM    21-Nov-17 1:45:17 AM    23-Nov-17 2:30:03 PM

Пример вывода, который я хочу:

I:
├───Folder A          ■[▪«Parent Folder: I:\», ▪«Full Path: I:\Folder A», ▪«File Type:  File folder», «Size: 65.34 MB (65,343,693 B) — Contains: 3 Files, 0 Folders», ▪«Created: 21-Nov-17 1:45:15 AM», ▪«Modified: 21-Nov-17 1:45:17 AM», ▪«Accessed: 23-Nov-17 2:30:03 PM»]
│   ├───File A1.mp4          ■[▪«Parent Folder: Folder A», ▪«Full Path: I:\Folder A\File A1.mp4», ▪«File Type: MP4 - MPEG-4 video files», «Size: 21.78 MB (21,781,231 B) », ▪«Created: 21-Nov-17 1:45:15 AM», ▪«Modified: 21-Nov-17 1:45:17 AM», ▪«Accessed: 23-Nov-17 2:30:03 PM»]
│   ├───File A2.mp4          ■[▪«Parent Folder: Folder A», ▪«Full Path: I:\Folder A\File A2.mp4», ▪«File Type: MP4 - MPEG-4 video files», «Size: 21.78 MB (21,781,231 B) », ▪«Created: 21-Nov-17 1:45:15 AM», ▪«Modified: 21-Nov-17 1:45:17 AM», ▪«Accessed: 23-Nov-17 2:30:03 PM»]
│   └───File A3.mp4          ■[▪«Parent Folder: Folder A», ▪«Full Path: I:\Folder A\File A3.mp4», ▪«File Type: MP4 - MPEG-4 video files», «Size: 21.78 MB (21,781,231 B) », ▪«Created: 21-Nov-17 1:45:15 AM», ▪«Modified: 21-Nov-17 1:45:17 AM», ▪«Accessed: 23-Nov-17 2:30:03 PM»]
├───Folder B          ■[▪«Parent Folder: I:\», ▪«Full Path: I:\Folder B», ▪«File Type:  File folder», «Size: 21.78 MB (21,781,231 B) — Contains: 1 Files, 0 Folders», ▪«Created: 21-Nov-17 1:45:15 AM», ▪«Modified: 21-Nov-17 1:45:17 AM», ▪«Accessed: 23-Nov-17 2:30:03 PM»]
│   └───File B1.mp4          ■[▪«Parent Folder: Folder B», ▪«Full Path: I:\Folder B\File B1.mp4», ▪«File Type: MP4 - MPEG-4 video files», «Size: 21.78 MB (21,781,231 B)», ▪«Created: 21-Nov-17 1:45:15 AM», ▪«Modified: 21-Nov-17 1:45:17 AM», ▪«Accessed: 23-Nov-17 2:30:03 PM»]
├───Folder C          ■[▪«Parent Folder: I:\», ▪«Full Path: I:\Folder C», ▪«File Type:  File folder», «Size: 21.78 MB (21,781,231 B) — Contains: 1 Files, 1 Folders», ▪«Created: 21-Nov-17 1:45:15 AM», ▪«Modified: 21-Nov-17 1:45:17 AM», ▪«Accessed: 23-Nov-17 2:30:03 PM»]
│   └───Folder C1          ■[▪«Parent Folder: Folder C», ▪«Full Path: I:\Folder C\Folder C1», ▪«File Type:  File folder», «Size: 21.78 MB (21,781,231 B) — Contains: 1 Files, 0 Folders», ▪«Created: 21-Nov-17 1:45:15 AM», ▪«Modified: 21-Nov-17 1:45:17 AM», ▪«Accessed: 23-Nov-17 2:30:03 PM»]
│       └───File C1a.mp4          ■[▪«Parent Folder: Folder C1», ▪«Full Path: I:\Folder C\Folder C1\File C1a.mp4», ▪«File Type: MP4 - MPEG-4 video files», «Size: 21.78 MB (21,781,231 B) », ▪«Created: 21-Nov-17 1:45:15 AM», ▪«Modified: 21-Nov-17 1:45:17 AM», ▪«Accessed: 23-Nov-17 2:30:03 PM»]
├───Folder D          ■[▪«Parent Folder: I:\», ▪«Full Path: I:\Folder D», ▪«File Type:  File folder», «Size: 87.12 MB (87,124,924 B) — Contains: 4 Files, 6 Folders», ▪«Created: 21-Nov-17 1:45:15 AM», ▪«Modified: 21-Nov-17 1:45:17 AM», ▪«Accessed: 23-Nov-17 2:30:03 PM»]
│   ├───Folder D1          ■[▪«Parent Folder: Folder D», ▪«Full Path: I:\Folder D\Folder D1», ▪«File Type:  File folder», «Size: 21.78 MB (21,781,231 B) — Contains: 1 Files, 2 Folders», ▪«Created: 21-Nov-17 1:45:15 AM», ▪«Modified: 21-Nov-17 1:45:17 AM», ▪«Accessed: 23-Nov-17 2:30:03 PM»]
│   │   └───Folder D1a          ■[▪«Parent Folder: Folder D1», ▪«Full Path: I:\Folder D\Folder D1\Folder D1a», ▪«File Type:  File folder», «Size: 21.78 MB (21,781,231 B) — Contains: 1 Files, 1 Folders», ▪«Created: 21-Nov-17 1:45:15 AM», ▪«Modified: 21-Nov-17 1:45:17 AM», ▪«Accessed: 23-Nov-17 2:30:03 PM»]
│   │       └───Folder D1a1          ■[▪«Parent Folder: Folder D1a», ▪«Full Path: I:\Folder D\Folder D1\Folder D1a\Folder D1a1», ▪«File Type:  File folder», «Size: 21.78 MB (21,781,231 B) — Contains: 1 Files, 0 Folders», ▪«Created: 21-Nov-17 1:45:15 AM», ▪«Modified: 21-Nov-17 1:45:17 AM», ▪«Accessed: 23-Nov-17 2:30:03 PM»]
│   │           └───File D1a1a.mp4          ■[▪«Parent Folder: Folder D1a1», ▪«Full Path: I:\Folder D\Folder D1\Folder D1a\Folder D1a1\File D1a1a.mp4», ▪«File Type: MP4 - MPEG-4 video files», «Size: 21.78 MB (21,781,231 B) », ▪«Created: 21-Nov-17 1:45:15 AM», ▪«Modified: 21-Nov-17 1:45:17 AM», ▪«Accessed: 23-Nov-17 2:30:03 PM»]
│   ├───Folder D2          ■[▪«Parent Folder: Folder D», ▪«Full Path: I:\Folder D\Folder D2», ▪«File Type:  File folder», «Size: 21.78 MB (21,781,231 B) — Contains: 1 Files, 0 Folders», ▪«Created: 21-Nov-17 1:45:15 AM», ▪«Modified: 21-Nov-17 1:45:17 AM», ▪«Accessed: 23-Nov-17 2:30:03 PM»]
│   │   └───File D2a.mp4          ■[▪«Parent Folder: Folder D2», ▪«Full Path: I:\Folder D\Folder D2\File D2a.mp4», ▪«File Type: MP4 - MPEG-4 video files», «Size: 21.78 MB (21,781,231 B) », ▪«Created: 21-Nov-17 1:45:15 AM», ▪«Modified: 21-Nov-17 1:45:17 AM», ▪«Accessed: 23-Nov-17 2:30:03 PM»]
│   ├───Folder D3          ■[▪«Parent Folder: Folder D», ▪«Full Path: I:\Folder D\Folder D3», ▪«File Type:  File folder», «Size: 43.56 MB (43,562,462 B) — Contains: 2 Files, 0 Folders», ▪«Created: 21-Nov-17 1:45:15 AM», ▪«Modified: 21-Nov-17 1:45:17 AM», ▪«Accessed: 23-Nov-17 2:30:03 PM»]
│   │   ├───File D3a.mp4          ■[▪«Parent Folder: Folder D3», ▪«Full Path: I:\Folder D\Folder D3\File D3a.mp4», ▪«File Type: MP4 - MPEG-4 video files», «Size: 21.78 MB (21,781,231 B) », ▪«Created: 21-Nov-17 1:45:15 AM», ▪«Modified: 21-Nov-17 1:45:17 AM», ▪«Accessed: 23-Nov-17 2:30:03 PM»]
│   │   └───File D3b.mp4          ■[▪«Parent Folder: Folder D3», ▪«Full Path: I:\Folder D\Folder D3\File D3b.mp4», ▪«File Type: MP4 - MPEG-4 video files», «Size: 21.78 MB (21,781,231 B) », ▪«Created: 21-Nov-17 1:45:15 AM», ▪«Modified: 21-Nov-17 1:45:17 AM», ▪«Accessed: 23-Nov-17 2:30:03 PM»]
│   ├───Folder D4          ■[▪«Parent Folder: Folder D», ▪«Full Path: I:\Folder D\Folder D4», ▪«File Type:  File folder», «Size: 0 — Contains: 0 Files, 0 Folders», ▪«Created: 21-Nov-17 1:45:15 AM», ▪«Modified: 21-Nov-17 1:45:17 AM», ▪«Accessed: 23-Nov-17 2:30:03 PM»]

Я планирую разработать такое решение (если таковое не существует) с использованием AutoHotkey. Поэтому я собираюсь опубликовать отдельные вопросы, касающиеся программирования, в StackOverflow, связанные с этим вопросом. Я размещу ссылки на них здесь, как только я опубликую их (на тот случай, если кто-то с опытом программирования захочет поделиться каким-либо ответом, который ускорит ответ на этот вопрос для супер-пользователя).

1 ответ1

0

Get-ChildItem будет работать, но он не покажет вам иерархические уровни, как tree . Проблема с использованием tree для этого заключается в том, что он не пропускает объекты, что затрудняет получение свойств каждого элемента. Нам нужно будет передать tree в ForEach-Object , анализировать каждый результат справа, пока вы не дойдете до листа (не путаясь с потенциальными специальными символами в каждом имени файла или каталога), а затем запросить свойства.

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

Ознакомьтесь с Show-Tree (строки 1633-1866) из проекта расширения сообщества PowerShell (PSCX). Вывод Show-Tree -ShowLeaf -ShowProperty очень близок к вашим критериям, хотя расширенные свойства не присоединяются к исходному объекту.

C:\users\username\Desktop
├──Property: Attributes = ReadOnly, Directory
├──Property: BaseName = Desktop
├──Property: CreationTime = 12/03/2017 16:43:05
├──Property: CreationTimeUtc = 12/03/2017 21:43:05
├──Property: Exists = True
├──Property: Extension =
├──Property: FullName = C:\users\username\Desktop
├──Property: LastAccessTime = 12/17/2017 10:07:29
├──Property: LastAccessTimeUtc = 12/17/2017 15:07:29
├──Property: LastWriteTime = 12/17/2017 10:07:29
├──Property: LastWriteTimeUtc = 12/17/2017 15:07:29
├──Property: LinkType =
├──Property: Mode = d-r---
├──Property: Parent = username
├──Property: Root = C:\
├──Property: Target =
├──test.ps1
│  ├──Property: Attributes = Archive
│  ├──Property: BaseName = test
│  ├──Property: CreationTime = 12/16/2017 08:24:22
│  ├──Property: CreationTimeUtc = 12/16/2017 13:24:22
│  ├──Property: Directory = C:\users\username\Desktop
│  ├──Property: DirectoryName = C:\users\username\Desktop
│  ├──Property: Exists = True
│  ├──Property: Extension = .ps1
│  ├──Property: FullName = C:\users\username\Desktop\test.ps1
│  ├──Property: IsReadOnly = False
│  ├──Property: LastAccessTime = 12/16/2017 10:46:37
│  ├──Property: LastAccessTimeUtc = 12/16/2017 15:46:37
│  ├──Property: LastWriteTime = 12/16/2017 10:46:37
│  ├──Property: LastWriteTimeUtc = 12/16/2017 15:46:37
│  ├──Property: Length = 3285
│  ├──Property: LinkType =
│  ├──Property: Mode = -a----
│  ├──Property: Target =
│  └──Property: VersionInfo = File:             C:\users\username\Desktop\test.ps1
└──Artist - Title (Full Album).mp3
   ├──Property: Attributes = Archive
   ├──Property: BaseName = Artist - Title (Full Album)
   ├──Property: CreationTime = 12/15/2017 20:24:41
   ├──Property: CreationTimeUtc = 12/16/2017 01:24:41
   ├──Property: Directory = C:\users\username\Desktop
   ├──Property: DirectoryName = C:\users\username\Desktop
   ├──Property: Exists = True
   ├──Property: Extension = .mp3
   ├──Property: FullName = C:\users\username\Desktop\Artist - Title (Full Album).mp3
   ├──Property: IsReadOnly = False
   ├──Property: LastAccessTime = 12/15/2017 20:24:41
   ├──Property: LastAccessTimeUtc = 12/16/2017 01:24:41
   ├──Property: LastWriteTime = 12/15/2017 20:25:34
   ├──Property: LastWriteTimeUtc = 12/16/2017 01:25:34
   ├──Property: Length = 45120000
   ├──Property: LinkType =
   ├──Property: Mode = -a----
   ├──Property: Target =
   └──Property: VersionInfo = File:             C:\users\username\Desktop\Artist - Title (Full Album).mp3

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .