Копировать файл с другим именем в один и тот же каталог во всех подкаталогах

Поскольку разные приложения требуют разных имен файлов, я пытался скопировать Folder.jpg в cover.jpg во всех подпапках, но не смог заставить работать свой shellscript.

get-childItem -recurse | Where {$_.extension -eq "jpg"} | copy-item Folder.jpg cover.jpg

Это было ошибок нет, но ничего не произошло.

Благодарен за любую помощь экспертов.

1
задан 26 April 2017 в 19:13
2 ответа

@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" }
0
ответ дан 3 December 2019 в 23:31

Проще всего выполнить рекурсивный поиск 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'}
1
ответ дан 3 December 2019 в 23:31

Теги

Похожие вопросы