Заметки · 11.06.2022

Список файлов в папке

Потребовалось мне на днях создать перечень файлов с нескольких жёстких дисков и разместить полученные данные в таблицу xls. Иерархия данных на носителях была такой — отдельные файлы лежали в корне папки, а те, что должны быть сгруппированы — пылились в каталогах. Собирать отдельный перечень по файлам в каталогах не требовалось. Нужно было лишь получить общий перечень.

Получился у меня вот такой скрипт:

## Целевая папка ##
$path = "D:\Folder"

## Файл списка ##
$listfile = "D:\list.txt"

## Получаем список файлов в заданной папке и записываем в файл списка ##
(Get-ChildItem -Path $path -Force -File).BaseName | select-string -pattern 'Thumbs' -notmatch | Out-File $listfile

## Получаем список папок и дописываем файл списка ##
(Get-ChildItem -Path $path -Force -Directory).BaseName | Add-Content $listfile

## Сортируем весь список, удаляем висящие строки, сохраняем список ##
$sorted = Get-Content $listfile | Sort-Object | ? {$_.trim() -ne "" } | set-content $listfile

## Открываем созданный файл списка и ждём его закрытия ##
Start-Process -FilePath notepad.exe -ArgumentList $listfile -Wait

## Удаляем файл списка ##
Remove-Item $listfile

Отдельно отмечу фильтрацию файлов с миниатюрами — thumbs.db. Эти файлы остались от прежних версий операционных систем и их наличие на дисках не создаёт никаких проблем, однако в списке они, само собой, не нужны.