【问题标题】:Powershell search subfolders for specific folder and copyPowershell搜索特定文件夹的子文件夹并复制
【发布时间】:2014-05-07 14:44:31
【问题描述】:

我正在尝试编写一个 powershell 脚本来从 csv 文件中搜索文件夹及其子文件夹中的特定文件夹,然后将该文件夹复制到其他地方。

[CmdletBinding()]
Param(
    [Parameter(Mandatory=$True,Position=1)]
    [string]$filePath,
    [Parameter(Mandatory=$True,Position=2)]
    [string]$InstanceName
)

Import-CSV -Delim ',' -Path $filePath  | ForEach-Object {
    Get-ChildItem -Path D:\Folder\$InstanceName -Directory -Recurse
    Copy-Item $_.FOLDERNAME d:\CopyFolder\$InstanceName -recurse
}

这似乎永远运行并且显然错误很多,因为当它尝试复制时文件不存在。如果我不知道具体路径,有没有办法只使用 Copy-Item ?或者其他一些替代方法来解决这个问题?

【问题讨论】:

    标签: powershell get-childitem copy-item


    【解决方案1】:

    有几点:

    • 您可以使用 -filter 参数搜索特定文件夹
    • 管道化您的 get-childitem 的结果,以便它只尝试执行 找到文件夹时复制项目
    • 在 get-childitem 上使用 -recurse 参数时使用 FullName 属性,以确保始终使用项目的完整路径

      Import-CSV -Delim ',' -Path $filePath  | ForEach-Object {
          Get-ChildItem -Path D:\Folder\$InstanceName -Recurse -Directory -Filter $_.FOLDERNAME | ForEach-Object {
              Copy-Item $_.FullName d:\CopyFolder\$InstanceName -Recurse
          }
      }
      

    【讨论】:

    • 我想复制文件夹和其中的项目,而不是文件。这就是为什么我应该正确使用递归?
    • @Shawn 是的,抱歉,已更新答案.. FILENAME 的 CSV 列标题包含文件夹名称?这有点误导
    • 对不起,我改了。感谢您的帮助。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-04-09
    • 1970-01-01
    • 2013-02-27
    • 2015-08-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多