Список каталогов включает дату изменения, размер файла в текстовом файле/файле Excel.

Список каталогов включает дату изменения, размер файла в текстовом файле/файле Excel.

Я хочу перечислить каталоги, подкаталоги и файлы всего диска (Z:) в одном текстовом файле со всеми датами и размерами файлов. Затем я могу открыть файл в Excel.

В настоящее время я использую следующую команду:

dir z:\ /s /o:gne >text.txt

Есть ли способ получить вывод, аналогичный тому, что вы обычно получаете с помощью команды tree, со всеми файлами и подкаталогами, сложенными в один, а не перечисленными по отдельности?

Что мне нужно сделать или ввести, если я хочу удалить другую ненужную информацию, например время?

решение1

powershell ls -r -fo Z:\ ^|?{!$_.PSIsContainer}^|Select DirectoryName,Name,BaseName,Extension,Length,CreationTime,LastAccessTime,LastWriteTime ^|epcsv Z:\excel.csv -En  UTF8 -NoType -Delim ';'
  • ^|- ^- маска транспортера/символа трубы в cmd, |- объект трубы
  • $_- переменная для текущего объекта в конвейере; пример:

    powershell 'a','B','c','d','F' ^|%{if($_.toLower() -gt 'b'){write $_}}
    
  • ?= where- проверка не является ?{!$_.PSIsContainer}циклом каталогов{}

  • ls -r- получить все файлы в/и все подкаталоги и текущий каталог

  • -fo= -force- добавить в список скрытых, системных и доступных только для чтения файлов атрибутов
  • 'Z:\' - путь к каталогу, если использовать 'Z:' - установить текущий каталог на Z: cd.

  • select- выберите свойства у lsобъекта трубы

  • epcsv= Export-Csv- Экспорт объекта PowerShell в файл с разделенными значениями (CSV).

  • -En= -Encoding- Encoding string Кодировка для экспортируемого CSV-файла. Допустимые значения: Unicode, UTF7, UTF8, ASCII, UTF32, BigEndian unicode, Default и OEM. Значение по умолчанию — ASCII.
  • -NoType= -NoTypeInformation- Исключить информацию о типе из CSV-файла.
  • -Delim ';'- -Delimiterchar Разделитель значений свойств. По умолчанию используется запятая (,). Введите символ, например двоеточие (:). Чтобы указать точку с запятой (;), заключите ее в кавычки.

результат: введите описание изображения здесь

решение2

Я обнаружил, что в приведенном выше примере есть проблемы с пробелами в именах каталогов. По моему опыту, эта базовая команда PowerShell работает лучше:

Get-ChildItem -r "Z:\" | select DirectoryName,Name,Extension,CreationTime,AccessTime,LastWriteTime | Export-Csv -Append -Path "Z:\export.csv" -En UTF8 -NoType -Delim ','

Кроме того, использование разделителя «;» сбивает с толку Excel, а его замена на «,» означает, что Excel может открыть экспортированный CSV-файл без каких-либо дополнительных манипуляций с данными.

Связанный контент