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

时间:2013-11-17 16:02:53

标签: powershell batch-file windows-7 file-rename batch-rename

我有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 个答案:

答案 0 :(得分: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 
}