Внутри определенной папки у меня есть несколько подпапок, в каждой из которых хранятся файлы изображений.
Я хотел бы скопировать первый файл изображения из каждой подпапки в родительский и переименовать его вимя папки, к которой она принадлежит.
Мне удалось написать следующий скрипт с информацией из нескольких других вопросов на сайте, но есть кое-что, что работает не так, как ожидалось. Запуск сценария не копирует / не переименовывает файл.
$Root = (Get-Item -Path '.\' -Verbose).FullName #'
$Folders = Get-ChildItem -Path $Root -Directory
$Image = Get-ChildItem -Name -Filter *.* | Select-Object -First 1
Foreach($Fld in $Folders)
{
Copy-Item -Path "$($Fld.FullName)\$Image" -Destination "$Root\$($Fld.Name).jpeg"
}
Read-Host -Prompt "Press Enter to exit"
Я хочу иметь возможность запускать сценарий из любой папки, пути должны быть относительными, а не абсолютными / жестко закодированными. Я думаю, что переменная $Root
достигает этой цели.
Подпапки содержат только файлы изображений, фильтр *.*
в $Image
Get-ChildItem
подходит для этой цели, так как он всегда выбираетобраз. Однако команда Copy-Item скопирует его с расширением jpeg, возможно ли проверить расширение файла изображения и соответственно скопировать / переименовать? Возможно, с некоторыми заявлениями If?