Software para generar el árbol de directorios aplanado en un formato particular

Lo que estoy buscando es algún tipo de software que pueda generar en un archivo de texto el árbol/jerarquía de directorios aplanados , incluido cualquier archivo que contenga. Es para fines de copia de seguridad.

Digamos, por ejemplo, que tengo D:\Software que contiene un par de carpetas, D:\Software\Soft1 y D:\Software\Soft2 , y un par de archivos, D:\Software\Soft1\run1.exe y D:\ Software\inicio.bin

El archivo de texto en la salida debería verse así:

[D:\Software]

[D:\Software\Soft1]

[D:\Software\Soft1\run1.exe]

[D:\Software\Soft2]

[D:\Software\start.bin]

Espero haber dejado claro lo que necesito.

Respuestas (1)

Según tengo entendido, dada una carpeta de entrada, le gustaría aplanar el árbol/jerarquía de carpetas y escribir el resultado en un archivo de texto con el formato que especificó.

He escrito un script de PowerShell para lograrlo.

Cree un archivo de texto .ps1 (por ejemplo , Flatten-Dir.ps1 ) con el siguiente contenido:

param
(
    # The input/root folder to process
    [Parameter(Mandatory = $true)]
    [string]$InputFolder,

    # The output folder that will contain the flattened folder tree
    [Parameter(Mandatory = $true)]
    [string]$OutputFile
)

function recdir($InputFolder)
{
    Get-ChildItem -Path $InputFolder | foreach {
        if($_.Attributes -eq "Directory")
        {
            Write-Output ("[" + $_.FullName + "]`r`n")
            recdir $_.FullName
        }
        else
        {
            Write-Output ("[" + $_.FullName + "]`r`n")
        }
    }
}

Set-Content -Path $OutputFile -Force ("[" + $InputFolder + "]`r`n")
recdir $InputFolder | Add-Content -Path $OutputFile

Luego, ejecútelo en un entorno de PowerShell y proporcione la carpeta de entrada que desea procesar, seguido del archivo de salida que contendrá el árbol de carpetas plano. Por ejemplo:

Flatten-Dir.ps1 C:\tmp\Software C:\tmp\flattened_tree.txt

El script utiliza una función recursiva personalizada para lograr ese resultado deseado en particular. Si alguien piensa que hay una manera mejor/más fácil de hacerlo, hágamelo saber.

Como prueba, si esta es la estructura de carpetas con algunos archivos...

Muestra de árbol

... entonces esto es lo que escribe el script en el archivo de salida:

[C:\tmp\Software]

[C:\tmp\Software\Soft1]

[C:\tmp\Software\Soft1\run.exe]

[C:\tmp\Software\Soft1\setting.ini]

[C:\tmp\Software\Soft1\test.bat]

[C:\tmp\Software\Soft2]

[C:\tmp\Software\Soft2\Soft3]

[C:\tmp\Software\Soft2\abc.txt]

[C:\tmp\Software\Soft2\def.htm]

[C:\tmp\Software\start.bin]
Gracias, lo probaré una vez que mi PC deje de funcionar. ¡Muy agradecido!