我有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
....
希望它清楚!
答案 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
}