Como exportar uma estrutura hierárquica de diretórios (com Detalhes do Arquivo Estendido)?

0

Eu preciso da listagem hierárquica de todos os arquivos junto com Detalhes do arquivo estendido .

A minha pergunta é semelhante a Como posso exportar uma estrutura de diretórios? Ambas as respostas mencionando árvore e Get-ChildItem são bons para mim, mas eu só quero adicionar a cada item os Detalhes do arquivo estendido .

Detalhes do arquivo estendido que desejo são:

  • Caminho completo (por exemplo, I:\MS\Ly\Video2453.mp4 )
  • Tipo de arquivo (no formato EXT - DESCRIPTION, por exemplo, MP4 - MPEG-4 video files )
  • Tamanho (por exemplo, 21.78 MB ) (Além disso, preciso mostrar isso em bytes)
  • Criado (data de criação do arquivo, por exemplo, 21-Nov-17 1:45:15 AM )
  • Modificado (data de modificação do arquivo, por exemplo, 21-Nov-17 1:45:17 AM )
  • Acessado (última data de acesso ao arquivo, por exemplo, 23-Nov-17 2:30:03 PM )

Exemplo de Detalhes do arquivo estendido que posso obter no menu de contexto em Utilitário de renomeação em massa :

Filename    Parent Folder   Full Path   File Type   Size    Created Modified    Accessed
122453.mp4  Video   I:\MS\Ly\Video2453.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

Exemplo da saída que eu quero:

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»]

Estou planejando desenvolver essa solução (se não houver nenhuma) usando o AutoHotkey. Então, vou postar questões específicas de programação separadas no StackOverflow relacionadas a essa questão. Vou colocar links para eles aqui assim que eu os postar (apenas no caso de alguém com experiência em programação querer compartilhar alguma resposta que irá impulsionar a resposta a essa pergunta de super-usuário).

    
por Omar 17.12.2017 / 00:01

1 resposta

0

Get-ChildItem funcionará, mas não mostrará os níveis hierárquicos, como tree . Um problema com o uso de tree para isso é que ele não está passando objetos, o que dificulta a obtenção das propriedades de cada item. Precisamos canalizar tree para ForEach-Object , analisar cada resultado da direita até você atingir uma folha (não ficar confuso com possíveis caracteres especiais em cada nome de arquivo ou diretório) e, em seguida, consultar as propriedades.

Você pode fazer isso, e há muitas abordagens para isso, mas você pode querer procurar soluções existentes primeiro.

Confira Show-Tree (linhas 1633-1866) do projeto Extensão da Comunidade PowerShell (PSCX). A saída de Show-Tree -ShowLeaf -ShowProperty está muito próxima dos seus critérios, embora as propriedades estendidas não estejam associadas ao objeto de origem.

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
    
por 17.12.2017 / 16:41