Cómo iterar a través de todas las carpetas dentro de subcarpetas de carpetas de nivel de raíz

sharepoint.stackexchange https://sharepoint.stackexchange.com//questions/92622

  •  10-12-2019
  •  | 
  •  

Pregunta

A continuación se muestra el código para iterar a través de las carpetas de nivel raíz que la carpeta de descargas comienza con "A" y descargue las carpetas que comienza con cualquier letra.Quiero descargar todos los niveles de carpeta y no solo la subfolder. ¿Cómo logro esto

foreach($folder in $RootFolder.SubFolders)
{
if($folder.Name.StartsWith("a")
{
ProcessFolder($folder.Url)
}
foreach($folder in $folders.SubFolders)
{
ProcessFolder($folder.Url)

}

}

¿Fue útil?

Solución

Haría algo como esto:

function ProcessAllSubfolders($folderCollection)
{
    foreach ($folder in $folderCollection)
    {
        if ($folder.Subfolders.Count -gt 0)
        {
            ProcessAllSubfolders($folder.SubFolders)
        }

        ProcessFolder($folder.Url)
    }
}

# main

foreach ($folder in $RootFolder.SubFolders)
{
    if ($folder.Name.StartsWith("a"))
    {
        if ($folder.Subfolders.Count -gt 0)
        {
            ProcessAllSubfolders($folder.SubFolders)
        }

        ProcessFolder($folder.Url)
    }
}

(Me doy cuenta de que hay alguna duplicación de código allí y probablemente haya una forma más elegante de hacerlo, pero ¿qué desea para una respuesta de 3 minutos?)

Licenciado bajo: CC-BY-SA con atribución
scroll top