如何批量复制和重命名文件从一个文件夹到另一个文件夹?
Posted
技术标签:
【中文标题】如何批量复制和重命名文件从一个文件夹到另一个文件夹?【英文标题】:How to batch copy and rename files from one folder to another? 【发布时间】:2013-11-30 17:20:55 【问题描述】:我有 100 个包含 psd 文件的文件夹:
C:\Users\Harvey\Documents\Archive011112\TFG\SG\ET\ET2013\filenameX\psd\logo.psd
C:\Users\Harvey\Documents\Archive011112\TFG\SG\ET\ET2013\filenameY\psd\logo.psd
C:\Users\Harvey\Documents\Archive011112\TFG\SG\ET\ET2013\filenameZ\psd\logo.psd
...
每个psd文件都包含一张图片:'logo.psd'
我想复制分别位于的'filenameX'、'filenameY'、'filenameZ'的'logo.psd',
C:\Users\Harvey\Documents\Archive011112\TFG\SG\ET\ET2013\filenameX\psd
C:\Users\Harvey\Documents\Archive011112\TFG\SG\ET\ET2013\filenameY\psd
C:\Users\Harvey\Documents\Archive011112\TFG\SG\ET\ET2013\filenameZ\psd
...
到另一个文件夹,
C:\Users\Harvey\Documents\Archive011112\TFG\SG\ET\Logos\
然后用“logo_parentfoldername”重命名“logo”文件:“logo_filenameX”、“logo_filenameY”、“logo_filenameZ”。
最终结果:
C:\Users\Harvey\Documents\Archive011112\TFG\SG\ET\Logos\logo_filenameX.psd
C:\Users\Harvey\Documents\Archive011112\TFG\SG\ET\Logos\logo_filenameY.psd
C:\Users\Harvey\Documents\Archive011112\TFG\SG\ET\Logos\logo_filenameZ.psd
....
希望清楚!
【问题讨论】:
【参考方案1】:这样的事情应该可以解决问题。
您想使用 Get-ChildItem 和 -Recurse 来获取每个子目录中的所有文件。
Get-ChildItem -Path $dir -Recurse
但将您的结果过滤到仅具有 .psd 扩展名的结果。
|?$_.Extension -eq ".psd"
然后为每个文件获取父目录的父目录的名称。
$_.Directory.Parent.Name
最后将文件复制到我们的新文件目的地。
Copy-Item $_.FullName $copyto
所以最终产品看起来像这样:
$dir = "C:\source\"
$destination = "C:\destination\"
Get-ChildItem -Path $dir -Recurse | ?$_.Extension -eq ".psd" | %
$copyto = $destination + $_.Directory.Parent.Name + ".psd"
Copy-Item $_.FullName $copyto
【讨论】:
完美的解释和脚本完美运行。有些文件丢失了,但你让我很开心。再次感谢!该文件唯一被命名为父文件夹名称“filenameX”而不是“logo_filenameX” 文件名建在这一行$copyto = $destination + $_.Directory.Parent.Name + ".psd"
所以添加“logo_”将该行改为:$copyto = $destination + "logo_" + $_.Directory.Parent.Name + ".psd"
非常感谢,非常有用的信息并且易于理解。问题解决了。以上是关于如何批量复制和重命名文件从一个文件夹到另一个文件夹?的主要内容,如果未能解决你的问题,请参考以下文章