He escrito este Script el cual genera un archivo de texto que contiene la lista de archivos con la estructura de archivos del directorio de trabajo y de sus subdirectorios, el directorio de trabajo se puede modificar en las variables del Script, y la lista de archivos en el archivo de listado se registra usando rutas relativa de los archivos de dicho directorio de trabajo.
¿Porque en Batch si siempre me estoy quejando de este "lenguaje"?, para recordar viejos tiempos y porque tuve que escribirlo y testearlo diréctamente desde una VM, con otro lenguaje habria sido aún más coñazo estar testeando de la VM al PC host y viceversa.
Bueno, el script tiene 3 métodos de exclusión de archivos, que son: 1. Por extensión, 2. Por nombres, o 3. Por ruta absoluta, esta última está limitada a la capacidad de caracteres que puede tener un String en Batch (Int32).
El Script tiene 2 métodos de listar los archivos, que son: 1. Listado normal, y 2. Listado incluyendo archivos ocultos.
El Script también tiene capacidad de registrar unformación básica en un Log, y la funcionalidad de medir el tiempo transcurrido de la operación.
Todo lo que he mencionado se puede configurar en las variables que están documentadas con comentarios de ayuda en el código.
Nota: Al explotar la limitada capacidad de Batch añadiendo varias funcionalidades adicionales a un código, este se vuelve demasiado lento, ya que Batch por naturaleza es MUY lento para trabajar, así que ya aviso, si no necesitan excluir archivos entonces no asignen ningún valor en las variables de exclusión.
PD: En el log se guardan las rutas relativas de los archivos que hayan sido excluidas:
Files2List.log
Citar
Excluded Files:
===============
.\Filesize Truncator.bat
.\Folders2List.bat
.\Windows\WinSxS\Get Manifests.bat
===============
.\Filesize Truncator.bat
.\Folders2List.bat
.\Windows\WinSxS\Get Manifests.bat
· Una imagen de muestra:
· El código:
Files2List.cmd
Código
@Echo OFF REM ================= REM Console Settings: REM ================= Title Files2List - By Elektro Mode Con Cols=150 Lines=50 REM ===== REM Info: REM ===== Echo+ Echo ---------------------------------------------------------------------------------------------------------------------------------- Echo This script writes a textfile containing the relative paths of the file structure at the working directory and it's subdirectories Echo ---------------------------------------------------------------------------------------------------------------------------------- Echo+ REM ==================== REM User defined values: REM ==================== REM This value indicates the directory where to list it's file structure. REM This value indicates the resulting file list. REM This value indicates the ubication of the logfile that will record info. REM This value indicates the File-Extensions to exclude during the process. REM ( Use an ';' delimiter to separate multiple extensions ) Set "ExcludeExts=.bat;.cmd" REM This value indicates the filenames to exclude during the process. REM ( Use an ';' delimiter to separate multiple filenames ) REM This value indicates the files to exclude during the process. REM ( Use an ';' delimiter to separate multiple files ) REM This value indicates how the hidden files are threated when listing the file structure. REM True = List files and also files with the 'hidden' attribute. REM False = List only normal files without the 'hidden' attribute. Set "IncludeHiddenFiles=True" REM ===== REM Main: REM ===== :: Call Methods. Call :CheckErrors Call :CreateLog Call :StartTimer Call :StopTimer Call :EndLog Pause&Exit REM ======== REM Methods: REM ======== :CreateLog :: Create the Script Logfile and record starting info on it. ( Echo+ Echo Files 2 List Echo ========================= Echo /\/\/\/\/\/\/\/\/\/\/\/\/ Echo+ Echo+ Echo+ Echo+ Echo ========================= )>"%LogFile%" :: Display starting log info. Type "%LogFile%" | MORE :: Continue writting log. ( Echo+ Echo Excluded Files: Echo =============== Echo+ )>>"%LogFile%" Goto:EOF :EndLog ( Echo+ Echo+ )>>"%LogFile%" :: Display ending information. CLS Type "%LogFile%" Goto:EOF :StartTimer Goto :EOF :StopTimer ( )>"%TEMP%\%~n0 MinuteDiff.vbs" 'Cscript.exe /Nologo "%TEMP%\%~n0 MinuteDiff.vbs"' ) Goto:EOF :ListFiles Echo [+] Collecting files, this operation could take some minutes long, please wait... Goto:EOF :ListNormalFiles Set "Exclude=" ( ) && ( ) ) ( ) && ( ) ) ( ) && ( ) ) Set /A "ListedFileCount+=1" Set /A "ExcludedFileCount+=1" ) ))>"%OutputFile%" Goto :EOF :ListHiddenFiles Set "Exclude=" ( ) && ( ) ) ( ) && ( ) ) ( ) && ( ) ) Set /A "ListedFileCount+=1" Set /A "ExcludedFileCount+=1" ) ))>"%OutputFile%" Goto:EOF REM =============== REM Error Controls: REM =============== :CheckErrors :: 'IncludeHiddenFiles' Value check. Echo [x] Error parsing parameter 'IncludeHiddenFiles', Pause&Exit ) Goto:EOF
Espero que a alguien le sirva de utilidad.
Saludos!