
Tenho um disco rígido cheio de backups que preciso detalhar em uma planilha rapidamente e da seguinte forma específica. Espero que haja uma maneira fácil de fazer o que preciso por meio de algum tipo de arquivo .bat ou .cmd, mas não sei por onde começar.
Tudo que preciso são os dois primeiros níveis de pasta na hierarquia para ir para csv:
E estes são os dados que preciso exportar da unidade:
Eu tentei usar o seguinte código no PowerShell:
cd\ c:
<--- onde reside minha pasta de teste
então
cd\ test
<--- contém minhas estruturas de pastas de teste para saída
então isso que euencontradoantes de postar minha pergunta.
Get-ChildItem -Recurse -Directory -Depth 3 |
Select-Object FullName |
Export-Csv Test.csv -NoTypeInformation
E eu percebo que de alguma forma preciso usar Select-Object
para especificar mais propriedades de pasta para enviar para o csv, mas não consigo fazer com que o procedimento acima funcione da maneira básica que deveria.
Em vez disso, recebo o seguinte erro:
Get-ChildItem : A parameter cannot be found that matches parameter name 'Directory'.
At line:1 char:34
+ Get-ChildItem -Recurse -Directory <<<< -Depth 3 |
+ CategoryInfo : InvalidArgument: (:) [Get-ChildItem], ParameterBindingException
+ FullyQualifiedErrorId : NamedParameterNotFound,Microsoft.PowerShell.Commands.GetChildItemCommand
Também tentei importar minha pasta de teste para o Notepad ++ e consigo vê-la como um espaço de trabalho onde posso navegar, mas não consigo exportar para csv com as informações necessárias. As únicas opções que posso ver são as que você vê na captura de tela quando clico com o botão direito nos diretórios e nenhuma opção de saída (não sou especialista nisso).
A outra coisa que tentei foi criar um arquivo test.cmd com o seguinte:
C:\TEST\
dir >> C:\TEST\test.csv
Depois de executar isso, parece que estou um pouco mais perto do que estou procurando, mas ainda não estou vendo as informações necessárias conforme especificado no meu originalcaptura de tela do Excelno topo desta postagem:
Como você pode ver, estou sem o caminho de diretório adequado e tudo o que vejo é que <DIR>
também não consigo ver o segundo nível na estrutura de pastas que contém as subpastas. A contagem e o tamanho dos arquivos de cada pasta e a classificação em colunas também não estão corretos.
Alguém com conhecimento de criação de banco de dados baseado em comandos pode me ajudar? Minha pergunta foi colocada em espera porque não era detalhada o suficiente, mas agora me esforcei ao máximo para explicar tudo o que tentei e com mais de 2 petabytes de backups de armazenamento em planilha de nosso armazenamento Nearline, preciso ser capaz de faça isso de forma rápida e eficiente.
Muito obrigado antecipadamente.
Responder1
Eu concordo com Bill_Stuart sobre o acordo WinDirStat... (embora eu não precise usá-lo há anos). No entanto, se você disser que deve, então talvez algo como o abaixo, é claro, altere o cálculo para o que você escolher. a coisa do tamanho.
Clear-Host
Get-ChildItem -Path 'd:\temp' -Recurse -Directory -Depth 3 |
Select-Object Name,FullName,
@{Name='FolderCount';Expression = {(Get-ChildItem -Path $_.FullName -Directory -Recurse | Measure-Object).Count}},
@{Name='FileCount';Expression = {(Get-ChildItem -Path $_.FullName -File -Recurse| Measure-Object).Count}},
@{Name='SizeMB';Expression = {(Get-ChildItem $_.FullName -Recurse | Measure-Object -Property Length -Sum).Sum / 1MB}} `
| Format-Table -AutoSize
# Results
Name FullName FolderCount FileCount SizeMB
---- -------- ----------- --------- ------
abcpath0 D:\temp\abcpath0 2 5 0.005889892578125
abcpath1 D:\temp\abcpath1 2 5 0.005889892578125
abcpath2 D:\temp\abcpath2 2 5 0.005889892578125
Duplicates D:\temp\Duplicates 24 12677 88.9826745986938
EmptyFolder D:\temp\EmptyFolder 0 0 0
NewFiles D:\temp\NewFiles 0 4 0.000568389892578125
...
Responder2
Tente trabalhar com o seguinte no Powershell.
$dir = "C:\"
$results = @()
gci $dir -Recurse -Depth 1 | % {
$temp = [ordered]@{
NAME = $_
SIZE = "{0:N2} MB" -f ((gci $_.Fullname -Recurse | measure -Property Length -Sum -ErrorAction SilentlyContinue).Sum / 1MB)
FILE_COUNT = (gci -File $_.FullName -Recurse | measure | select -ExpandProperty Count)
FOLDER_COUNT = (gci -Directory $_.FullName -Recurse | measure | select -ExpandProperty Count)
DIRECTORY_PATH = $_.Fullname
}
$results += New-Object PSObject -Property $temp
}
$results | export-csv -Path "C:\output.csv" -NoTypeInformation