由于不同的应用程序需要不同的文件名,我一直尝试将 Folder.jpg 复制到所有子文件夹中的 cover.jpg,但无法使我的 shellscript 正常工作。
get-childItem -recurse | Where {$_.extension -eq "jpg"} | copy-item Folder.jpg cover.jpg
没有错误但是什么也没有发生。
感谢这里专家的帮助。
答案1
最简单的方法是递归搜索 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'}
答案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" }