0

我正在尝试编写一个 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 ?或者其他一些替代方法来解决这个问题?

4

1 回答 1

0

有几件事:

  • 您可以使用 -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
        }
    }
    
于 2014-05-07T15:13:45.313 回答