我正在编写一个遍历目录并复制其中的每个文件和文件夹的递归函数。我在函数中进行的第一项检查是查看传入的路径是否有子级。为了找出答案,我使用以下方法:

[array]$arrExclude = @("Extras")
Function USBCopy
{
Param ([string]$strPath, [string]$strDestinationPath)
    try
    {
        $pathChildren = Get-ChildItem -Path $strPath
        if($pathChildren.Length -gt 0)
        {
            foreach($child in $pathChildren)
            {
                if($arrExclude -notcontains $child)
                {
                    $strPathChild = "$strPath\$child"
                    $strDestinationPathChild = "$strDestinationPath\$child"
                    Copy-Item $strPathChild -Destination $strDestinationPathChild
                    USBCopy $strPathChild $strDestinationPathChild
                }
            }
        }
    }
    catch
    {
        Write-Error ("Error running USBCopy: " + $Error[0].Exception.Message)
    }
}

我的函数在大多数情况下都可以正常工作,但是我的代码会说目录中实际上只有1个文件时为空。当我调试函数时,变量会说该文件夹有子文件夹,但变量的长度为0。有人知道如何解决这个问题吗?

最佳答案

尝试使用$pathChildren.Count而不是$pathChildren.Length-这将返回数组中的项目数。

关于arrays - Get-ChildItem.Length错误,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/44035319/

10-12 00:53