Поскольку разные приложения требуют разных имен файлов, я пытался скопировать Folder.jpg в cover.jpg во всех подпапках, но не смог заставить работать свой shellscript.
get-childItem -recurse | Where {$_.extension -eq "jpg"} | copy-item Folder.jpg cover.jpg
Это было ошибок нет, но ничего не произошло.
Благодарен за любую помощь экспертов.
@LotPings показал хорошо отформатированный сценарий PS для вашей задачи. Было бы еще лучше, если бы это была функция.
function Copy-Covers ($location) {
# Change to base folder
Push-Location $location
# Recursively copy all occurrences of folder.jpg under $location
Get-ChildItem Folder.jpg -Recurse | ForEach-Object {
Set-Location $_.DirectoryName
Copy-Item .\Folder.jpg .\Cover.jpg
}
Pop-Location
}
Для одноразовой задачи часто можно использовать однострочники. В этом случае это будет выглядеть так (выполнить из базовой папки, в которую вы хотите, чтобы произошло копирование):
gci -R -filter folder.jpg | % {copy $_ "$($_.DirectoryName)\cover.jpg" }
Проще всего выполнить рекурсивный поиск Folder.jpg, перейти в эту папку, скопировать и получить следующую.
# Change to base folder
Push-Location "Q:\Test\2017"
Get-ChildItem Folder.jpg -Recurse | ForEach-Object {
Set-Location $_.DirectoryName
Copy-Item .\Folder.jpg .\Cover.jpg
}
Pop-Location
gci folder.jpg -r|copy -dest {$_.FullName -replace 'folder','cover'}