如何批量复制和重命名文件从一个文件夹到另一个文件夹?

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" 非常感谢,非常有用的信息并且易于理解。问题解决了。

以上是关于如何批量复制和重命名文件从一个文件夹到另一个文件夹?的主要内容,如果未能解决你的问题,请参考以下文章

文件复制和重命名

使用创建日期复制和重命名文件(批处理脚本)

按特定条件复制和重命名 - 批量

如何使用shell复制和重命名多个文件

如何使用 CopyWebpackPlugin 复制和重命名文件

如何根据子文件夹复制文件和重命名