Necesito un archivo por lotes que de forma recursiva de la lista de carpetas y sus archivos (con fechas) a un archivo de texto. He encontrado varios en línea, como este

echo off
for /d %%a in (*.*) do dir "%%a" >> Report.txt

Pero ninguno en el formato simple que necesito. El archivo de proceso por lotes se debería ejecutar desde el directorio de búsqueda de la parte superior. Me gustaría ruta de acceso completa a la carpeta de búsqueda aparece en la parte superior, seguido por el de la carpeta y subcarpeta nombres, incluso si está vacío, sin sus caminos, cada uno seguido por sus archivos acompañado con una marca de tiempo. Así, algo como esto:

FullPathToTopFolder 
    FolderName1
        DateStamp   FileName1.txt      
        DateStamp   FileName2.txt      
        DateStamp   FileName3.txt      
    FolderName2
        DateStamp   FileName4.txt      
        DateStamp   FileName5.txt       
    FolderName3
        DateStamp   FileName6.txt      
    FolderName3
        /SubFolderName1
            DateStamp   FileName7.txt      
            DateStamp   FileName8.txt      
    FolderName4 
        /SubFolderName2
        /SubFolderName3
        /SubFolderName4
            DateStamp   FileName9.txt      
            DateStamp   FileName10.txt  
  • Esto se parece a Windows y MS-DOS. Si es así, ¿podría etiqueta de la pregunta como tal?
InformationsquelleAutor buttonsrtoys | 2013-02-17

1 Comentario

  1. 3

    Este script permite que la parte superior de la carpeta que se especifica como el primer parámetro. Si no se proporciona, a continuación, utiliza el directorio actual como la parte superior de la carpeta.

    Editado para redirigir la salida a un archivo

    @echo off
    setlocal disableDelayedExpansion
    pushd %1
    set "tab=    "
    set "indent="
    call :run >report.txt
    exit /b
    
    :run
    for %%F in (.) do echo %%~fF
    
    :listFolder
    setlocal
    set "indent=%indent%%tab%"
    for %%F in (*) do echo %indent%%%~tF   %%F
    for /d %%F in (*) do (
      echo %indent%.\%%F
      pushd "%%F"
      call :listFolder
      popd
    )
    exit /b
    
    • La recursividad! El amor es.
    • Impresionante! Esto es exactamente lo que necesito y funcionó a la perfección. Muchas gracias.
    • Necesito un tweak — para la secuencia de comandos para redirigir a un archivo, en lugar de la pantalla. Si yo simplemente poner «>> Report.txt» después de cada eco, que se extiende Report.txt a través de las subcarpetas debido a la recursividad. Yo podría ejecutar este archivo por lotes desde otro archivo por lotes y redirigir, pero prefiero tener auto-contenida.
    • Usted podría simplemente redirigir la salida cuando se llama a la secuencia de comandos. O usted podría incluir la ruta de acceso al redirigir con >>"reportPath\report.txt" en cada eco. O usted puede encapsular el código en una subrutina y redirigir al acceder a ella, como yo he hecho en mi editada respuesta. No olvide aceptar la respuesta haciendo clic en la marca de verificación situada cerca de la esquina superior izquierda de la respuesta. Que permite conocer a los demás la pregunta ha sido respondida, te otorga 2 puntos de rep, y los premios de la respuesta del cartel de los 15 puntos. Sólo una respuesta por pregunta puede ser aceptada.
    • Muchas gracias. Gracias también para educar a mí en la aceptación de respuestas.
    • Después de leer tu explicación, tomé su consejo y volvió de nuevo a usted de la versión original y la redirección de la salida cuando me llame la secuencia de comandos. Es un gran trabajo. La única pega es que sólo organiza los archivos y carpetas en orden alfabético, cuando el camino que se busca es en mi máquina local. Cuando el camino es en nuestra oficina (servidor de secuencia de comandos en mi máquina local) las carpetas y archivos que no se enumeran en orden alfabético?
    • Que en realidad podría hacer un buen nuevo la pregunta. 🙂
    • Sí! Gracias. Me acaba de publicar esto.

Dejar respuesta

Please enter your comment!
Please enter your name here