【问题标题】: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
....

希望清楚!

【问题讨论】:

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


    【解决方案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"
    • 非常感谢,非常有用的信息并且易于理解。问题解决了。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2010-11-02
    • 1970-01-01
    • 2014-04-03
    • 2023-01-14
    • 2016-06-23
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多