Как экспортировать имена файлов, путь к файлу и свойства дерева каталогов в CSV?

533
Myles

У меня есть жесткий диск, полный резервных копий, которые мне нужно подробно описать в электронной таблице следующим образом. Я надеюсь, что есть простой способ сделать то, что мне нужно, с помощью какого-то файла .bat или .cmd, но я не знаю, с чего начать.

Все, что мне нужно, это первые два уровня папок в иерархии, чтобы перейти к CSV:

Folder Structure

И это данные, которые мне нужно экспортировать с диска:

Data for Excel

Я попытался использовать следующий код в powershell:

cd\ c: <--- где находится моя тестовая папка

затем

cd\ test <--- содержит мои тестовые структуры папок для вывода

тогда это, которое я нашел прежде, чем отправлять мой вопрос.

Get-ChildItem -Recurse -Directory -Depth 3 | Select-Object FullName | Export-Csv Test.csv -NoTypeInformation 

И я понимаю, что мне как-то нужно использовать, Select-Objectчтобы указать больше свойств папки для вывода в CSV, но я не могу заставить вышеописанное работать так, как нужно.

Вместо этого я получаю следующую ошибку:

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 

Я также попытался импортировать мою тестовую папку в Notepad ++, и я могу видеть ее как рабочую область, которую я могу просматривать, но не могу экспортировать в CSV с информацией, которая мне нужна. Единственные параметры, которые я могу видеть, - это то, что вы видите на скриншоте, когда я щелкаю правой кнопкой мыши по каталогам, и никакой опции для вывода (я не эксперт в этом).

Notepad++

Еще я попробовал создать файл test.cmd со следующим:

C:\TEST\ dir >> C:\TEST\test.csv 

После запуска это, кажется, приближает меня к тому, что я ищу, но я все еще не вижу нужную мне информацию, как указано в моем оригинальном скриншоте Excel в верхней части этого поста:

output.csv from .cmd file

Как вы видите, мне не хватает правильного пути к каталогу, и все, что я вижу <DIR>вместо этого, я также не вижу второго уровня в структуре папок, содержащей подпапки. Количество и размер файлов для каждой папки и сортировка по столбцам также неверны.

Может ли кто-нибудь со знанием создания баз данных на основе команд мне помочь? Мой вопрос был отложен, потому что он не был достаточно подробным, но теперь я приложил максимум усилий, чтобы объяснить все, что я пробовал, и с более чем 2 петабайтами резервных копий хранилища для электронных таблиц из нашего хранилища Nearline мне нужно иметь возможность сделать это быстро и эффективно.

Спасибо заранее.

0
Какое число в столбце D («Количество папок»)? Количество подпапок в каждой из папок A, Папка B и Папка C? Michael Harvey 5 лет назад 0
Может быть, проще просто запустить [WinDirStat] (https://windirstat.net/), а не пытаться писать код самостоятельно. Bill_Stewart 5 лет назад 0

1 ответ на вопрос

0
postanote

Я согласен с Bill_Stuart по сделке WinDirStat ... (хотя мне не нужно было использовать его годами) Тем не менее, если вы говорите, что должны, то, возможно, что-то вроде ниже, конечно, изменить расчет на то, что вы выбираете для размер вещь.

Clear-Host Get-ChildItem -Path 'd:\temp' -Recurse -Directory -Depth 3 |  Select-Object Name,FullName, @}, @}, @} ` | 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 ... 

Похожие вопросы