1

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

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

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

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

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

2 ответа2

5
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 pipe

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

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

результат:

1

Выше есть проблемы с пробелами в именах каталогов, которые я нашел, эта базовая команда 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 без каких-либо дополнительных манипуляций с данными.

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