Я хочу перечислить каталоги, подкаталоги и файлы всего диска (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 ';'
--Delimiter
char Разделитель значений свойств. По умолчанию используется запятая (,). Введите символ, например двоеточие (:). Чтобы указать точку с запятой (;), заключите ее в кавычки.
результат:
решение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-файл без каких-либо дополнительных манипуляций с данными.