Foro de elhacker.net

Programación => Scripting => Mensaje iniciado por: Eleкtro en 12 Abril 2014, 00:31 am



Título: [APORTE] [BATCH] Folders2List
Publicado por: Eleкtro en 12 Abril 2014, 00:31 am
Hola

Este Script es el hermano de este otro Script (http://foro.elhacker.net/scripting/aporte_batch_files2list-t412507.0.html), genera un archivo de texto que contiene la lista de estructura de carpetas del directorio de trabajo y de sus subdirectorios, el directorio de trabajo se puede modificar en las variables del Script, y la lista de capetas se registra usando la ruta relativa de los archivos de dicho directorio de trabajo.

El Script tiene 2 métodos de listar las carpetas, que son: 1. Listado normal, y 2. Listado incluyendo carpetas ocultas.
El Script tiene 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.

· Una imagen de muestra:
(http://img545.imageshack.us/img545/7966/m6sv.png)

· El código:

Folders2List.cmd
Código
  1. @Echo OFF
  2.  
  3.  
  4.  
  5. REM =================
  6. REM Console Settings:
  7. REM =================
  8.  
  9. Title Folders2List - By Elektro
  10. Mode Con Cols=150 Lines=50
  11. CHCP 1252 1>NUL & REM Windows-1252, Spanish-Latin.
  12.  
  13.  
  14.  
  15. REM =====
  16. REM Info:
  17. REM =====
  18.  
  19. Echo  ------------------------------------------------------------------------------------------------------------------------------------
  20. Echo  This script writes a textfile containing the relative paths of the folder structure at the working directory and it's subdirectories
  21. Echo  ------------------------------------------------------------------------------------------------------------------------------------
  22.  
  23.  
  24.  
  25. REM ====================
  26. REM User defined values:
  27. REM ====================
  28.  
  29. REM This value indicates the directory where to list it's folder structure.
  30. Set "WorkingDir=%CD%"
  31.  
  32. REM This value indicates the resulting folder list.
  33. Set "OutputFile=%CD%\Folders.txt"
  34.  
  35. REM This value indicates how the hidden folders are threated when listing the folder structure.
  36. REM  True = List folders and also folders with the 'hidden' attribute.
  37. REM False = List only normal folders without the 'hidden' attribute.
  38. Set "IncludeHiddenFolders=True"
  39.  
  40.  
  41.  
  42. REM =====
  43. REM Main:
  44. REM =====
  45.  
  46. :: Display starting info.
  47. Echo [i] Working Directory...: %WorkingDir%
  48. Echo [i] Output file.........: %OutputFile%
  49. Echo [i] Include Hidden Files: %IncludeHiddenFolders%
  50.  
  51. :: Call Methods.
  52. Call :CheckErrors
  53. Call :StartTimer
  54. Call :ListFolders "%IncludeHiddenFolders%"
  55. Call :StopTimer
  56.  
  57. :: Finish.
  58. Echo [i] Done!           | MORE
  59. Echo [i] Listed Folders: %FolderCount% folders.
  60. Echo [i] Elapsed Time..: %ElapsedTime%
  61. Pause&Exit
  62.  
  63.  
  64.  
  65. REM ========
  66. REM Methods:
  67. REM ========
  68.  
  69. :StartTimer
  70. Set "StartingDate=%Date%"
  71. Set "StarttingTime=%Time:~0,-3%"
  72. Goto :EOF
  73.  
  74.  
  75. :StopTimer
  76. (
  77. Echo Minutes = DateDiff^("n", "%StartingDate% %StarttingTime%", Now^)
  78. Echo WScript.Echo Minutes ^& " Minutes"
  79. )>"%TEMP%\%~n0 MinuteDiff.vbs"
  80.  
  81. For /F "Tokens=*" %%# In (
  82. 'Cscript.exe /Nologo "%TEMP%\%~n0 MinuteDiff.vbs"'
  83. ) Do (
  84. Set "ElapsedTime=%%#"
  85. )
  86.  
  87. Goto:EOF
  88.  
  89.  
  90. :ListFolders
  91. Echo [+] Collecting folders, this operation could take some minutes long, please wait...
  92. If /I "%~1" EQU "True"  (Call :ListHiddenFolders)
  93. If /I "%~1" EQU "False" (Call :ListNormalFolders)
  94. Goto:EOF
  95.  
  96.  
  97. :ListNormalFolders
  98. (FOR /D /R "%WorkingDir%" %%# in ("*") DO (
  99. Set "Folder=%%~f#"
  100. Call Echo %%Folder:%WorkingDir%=.%%
  101. Set /A "FolderCount+=1"
  102. ))>"%OutputFile%"
  103. Goto:EOF
  104.  
  105.  
  106. :ListHiddenFolders
  107. (FOR /F "Tokens=* Delims=" %%# in ('Dir /B /S /AD "%WorkingDir%\*"') DO (
  108. Set "Folder=%%~f#"
  109. Call Echo %%Folder:%WorkingDir%=.%%
  110. Set /A "FolderCount+=1"
  111. ))>"%OutputFile%"
  112. Goto:EOF
  113.  
  114.  
  115.  
  116. REM ===============
  117. REM Error Controls:
  118. REM ===============
  119.  
  120. :CheckErrors
  121. :: 'IncludeHiddenFolders' Value check.
  122. If /I "%IncludeHiddenFolders%" NEQ "True" If /I "%IncludeHiddenFolders%" NEQ "False" (
  123. Echo [x] Error parsing parameter 'IncludeHiddenFolders',
  124. Echo     value '%IncludeHiddenFolders%' is not a Boolean value.
  125. Pause&Exit
  126. )
  127.  
  128. Goto:EOF


Título: Re: [APORTE] [BATCH] Folders2List
Publicado por: Trebla1011 en 12 Abril 2014, 10:24 am
Wow, :o :o
Buen script Elektro, Muy útil cuando tienes las carpetas tan desordenadas como yo.
Pero, ¿A que viene la función del tiempo? xD
Saludos


Título: Re: [APORTE] [BATCH] Folders2List
Publicado por: Eleкtro en 12 Abril 2014, 15:04 pm
Pero, ¿A que viene la función del tiempo? xD

Es un simple capricho, la verdad es que el script trabaja rápido pero aun así me gusta saber cuanto tarda, estoy acostumbrado a medir el tiempo de ejecución en la programación .NET para optimizar los procedimientos que den señales de conflictos en el tiempo de ejecución.

PD: Gracias por comentar.

Saludos!