【问题标题】:Copy-Item / Remove-Item child-content only without root folder?仅没有根文件夹的 Copy-Item / Remove-Item 子内容?
【发布时间】:2012-07-18 21:06:06
【问题描述】:

您好,我正在努力解决以下问题 - 假设我有以下目录结构 C:\Temp\Test1 和 C:\Temp\Test2

我想要做的是将 C:\Temp\Test1 的子内容递归复制到 C:\Temp\Test2 而不复制实际文件夹 C:\Temp\Test1 ..现在如果我使用命令

Copy-Item C:\Temp\Test1 C:\Temp\Test2 -Recurse

将导致 C:\Temp\Test2\Test1 并且没有任何参数组合似乎可以缓解问题

同样,当我希望删除 C:\Temp\Test2 中的所有子内容时,我希望只删除子内容而不是实际文件夹,例如

Remove-Item C:\Temp\Test2\ -Recurse

正在删除 \Test2 文件夹。我已经尝试了很多不同的参数 - 我怎样才能完成我想要做的事情?

【问题讨论】:

    标签: powershell powershell-2.0 powershell-ise


    【解决方案1】:

    看看get-childitem 命令。您可以在管道中使用它来复制或删除根文件夹下的所有项目:

    # recursively copy everything under C:\Temp\Test1 to C:\Temp\Test2
    get-childitem "C:\Temp\Test1" | % { 
        copy-item $_.FullName -destination "C:\Temp\Test2\$_" -recurse 
    }
    
    # recursively remove everything under C:\Temp\Test1
    get-childitem "C:\Temp\Test1" -recurse | % { 
        remove-item $_.FullName -recurse 
    }
    

    【讨论】:

    • 请注意,您不需要将 cmdlet 调用包装在 foreach (... | % { cmdlet $_.FullName ... }) 中; Copy-ItemRemove-Item 都将自动接受来自管道的输入。例如。第二个例子可以简化为Get-ChildItem "$env:temp\Test1" | Remove-Item -Recurse
    【解决方案2】:
        Copy-Item C:\Temp\Test1\* C:\Temp\Test2
        Remove-Item "C:\Temp\Test2\*" -recurse
    

    也有效:)

    【讨论】:

    猜你喜欢
    • 2014-06-06
    • 1970-01-01
    • 1970-01-01
    • 2017-12-11
    • 1970-01-01
    • 1970-01-01
    • 2014-06-01
    • 1970-01-01
    • 2010-10-15
    相关资源
    最近更新 更多