elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Curso de javascript por TickTack


+  Foro de elhacker.net
|-+  Programación
| |-+  Scripting
| | |-+  [APORTE] [BATCH] Files2List
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: [APORTE] [BATCH] Files2List  (Leído 2,161 veces)
Eleкtro
Ex-Staff
*
Desconectado Desconectado

Mensajes: 9.866



Ver Perfil
[APORTE] [BATCH] Files2List
« en: 11 Abril 2014, 23:34 pm »

Hola

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


· Una imagen de muestra:



· El código:

Files2List.cmd
Código
  1. @Echo OFF
  2.  
  3.  
  4.  
  5. REM =================
  6. REM Console Settings:
  7. REM =================
  8.  
  9. Title Files2List - 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 file 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 file structure.
  30. Set "WorkingDir=%CD%"
  31.  
  32. REM This value indicates the resulting file list.
  33. Set "OutputFile=%CD%\Files.txt"
  34.  
  35. REM This value indicates the ubication of the logfile that will record info.
  36. Set "Logfile=%CD%\%~n0.log"
  37.  
  38. REM This value indicates the File-Extensions to exclude during the process.
  39. REM ( Use an ';' delimiter to separate multiple extensions )
  40. Set "ExcludeExts=.bat;.cmd"
  41.  
  42. REM This value indicates the filenames to exclude during the process.
  43. REM ( Use an ';' delimiter to separate multiple filenames )
  44. Set "ExcludeNames=%~nx0"
  45.  
  46. REM This value indicates the files to exclude during the process.
  47. REM ( Use an ';' delimiter to separate multiple files )
  48. Set "ExcludeFiles=%OutputFile%;%Logfile%"
  49.  
  50. REM This value indicates how the hidden files are threated when listing the file structure.
  51. REM  True = List files and also files with the 'hidden' attribute.
  52. REM False = List only normal files without the 'hidden' attribute.
  53. Set "IncludeHiddenFiles=True"
  54.  
  55.  
  56.  
  57. REM =====
  58. REM Main:
  59. REM =====
  60.  
  61. :: Call Methods.
  62. Call :CheckErrors
  63. Call :CreateLog
  64. Call :StartTimer
  65. Call :ListFiles "%IncludeHiddenFiles%"
  66. Call :StopTimer
  67. Call :EndLog
  68. Pause&Exit
  69.  
  70.  
  71.  
  72. REM ========
  73. REM Methods:
  74. REM ========
  75.  
  76. :CreateLog
  77. :: Create the Script Logfile and record starting info on it.
  78. FSutil.exe File CreateNew "%LogFile%" "0" 1>NUL
  79. (
  80. Echo       Files 2 List
  81. Echo =========================
  82. Echo   %DATE% ^| %TIME:~0,-3%
  83. Echo /\/\/\/\/\/\/\/\/\/\/\/\/
  84. Echo [i] Working Directory...: %WorkingDir%
  85. Echo [i] Include Hidden Files: %IncludeHiddenFiles%
  86. Echo [i] Excluded Extensions.: %ExcludeExts%
  87. Echo [i] Excluded Filenames..: %ExcludeNames%
  88. Echo [i] Excluded Files......: %ExcludeFiles%
  89. Echo [i] Output file.........: %OutputFile%
  90. Echo [i] Log file............: %LogFile%
  91. Echo =========================
  92. )>"%LogFile%"
  93.  
  94. :: Display starting log info.
  95. Type "%LogFile%" | MORE
  96.  
  97. :: Continue writting log.
  98. (
  99. Echo Excluded Files:
  100. Echo ===============
  101. )>>"%LogFile%"
  102.  
  103. Goto:EOF
  104.  
  105.  
  106. :EndLog
  107. (
  108. Echo [i] Done!           | MORE
  109. Echo [i] Listed Files..: %ListedFileCount% files.
  110. Echo [i] Excluded Files: %ExcludedFileCount% files.
  111. Echo [i] Elapsed Time..: %ElapsedTime%
  112. )>>"%LogFile%"
  113.  
  114. :: Display ending information.
  115. CLS
  116. Type "%LogFile%"
  117. Goto:EOF
  118.  
  119.  
  120. :StartTimer
  121. Set "StartingDate=%Date%"
  122. Set "StarttingTime=%Time:~0,-3%"
  123. Goto :EOF
  124.  
  125.  
  126. :StopTimer
  127. (
  128. Echo Minutes = DateDiff^("n", "%StartingDate% %StarttingTime%", Now^)
  129. Echo WScript.Echo Minutes ^& " Minutes"
  130. )>"%TEMP%\%~n0 MinuteDiff.vbs"
  131.  
  132. For /F "Tokens=*" %%# In (
  133. 'Cscript.exe /Nologo "%TEMP%\%~n0 MinuteDiff.vbs"'
  134. ) Do (
  135. Set "ElapsedTime=%%#"
  136. )
  137.  
  138. Goto:EOF
  139.  
  140.  
  141. :ListFiles
  142. Echo [+] Collecting files, this operation could take some minutes long, please wait...
  143. If /I "%~1" EQU "True"  (Call :ListHiddenFiles)
  144. If /I "%~1" EQU "False" (Call :ListNormalFiles)
  145. Goto:EOF
  146.  
  147.  
  148. :ListNormalFiles
  149. (FOR /R "%WorkingDir%" %%# in ("*") DO (
  150.  
  151. Set "Exclude="
  152.  
  153. If Defined ExcludeExts (
  154. (
  155. Echo "%ExcludeExts%" | Find.exe /I "%%~x#" 1>NUL 2>&1
  156. ) && (
  157. Call Set "Exclude=True"
  158. )
  159. )
  160.  
  161. If Defined ExcludeNames (
  162. (
  163. Echo "%ExcludeNames%" | Find.exe /I "%%~nx#" 1>NUL 2>&1
  164. ) && (
  165. Call Set "Exclude=True"
  166. )
  167. )
  168.  
  169. If Defined ExcludeFiles (
  170. (
  171. Echo "%ExcludeFiles%" | Find.exe /I "%%~f#" 1>NUL 2>&1
  172. ) && (
  173. Call Set "Exclude=True"
  174. )
  175. )
  176.  
  177. If Not Defined Exclude (
  178. Set "File=%%~f#"
  179. Call Echo %%File:%WorkingDir%=.%%
  180. Set /A "ListedFileCount+=1"
  181. ) Else (
  182. Set "File=%%~f#"
  183. Call Echo %%File:%WorkingDir%=.%%>>"%LogFile%"
  184. Set /A "ExcludedFileCount+=1"
  185. )
  186.  
  187. ))>"%OutputFile%"
  188. Goto :EOF
  189.  
  190.  
  191. :ListHiddenFiles
  192. (FOR /F "Tokens=* Delims=" %%# in ('Dir /B /S /A-D "%WorkingDir%\*"') DO (
  193.  
  194. Set "Exclude="
  195.  
  196. If Defined ExcludeExts (
  197. (
  198. Echo "%ExcludeExts%" | Find.exe /I "%%~x#" 1>NUL 2>&1
  199. ) && (
  200. Call Set "Exclude=True"
  201. )
  202. )
  203.  
  204. If Defined ExcludeNames (
  205. (
  206. Echo "%ExcludeNames%" | Find.exe /I "%%~nx#" 1>NUL 2>&1
  207. ) && (
  208. Call Set "Exclude=True"
  209. )
  210. )
  211.  
  212. If Defined ExcludeFiles (
  213. (
  214. Echo "%ExcludeFiles%" | Find.exe /I "%%~f#" 1>NUL 2>&1
  215. ) && (
  216. Call Set "Exclude=True"
  217. )
  218. )
  219.  
  220. If Not Defined Exclude (
  221. Set "File=%%~f#"
  222. Call Echo %%File:%WorkingDir%=.%%
  223. Set /A "ListedFileCount+=1"
  224. ) Else (
  225. Set "File=%%~f#"
  226. Call Echo %%File:%WorkingDir%=.%%>>"%LogFile%"
  227. Set /A "ExcludedFileCount+=1"
  228. )
  229.  
  230. ))>"%OutputFile%"
  231. Goto:EOF
  232.  
  233.  
  234.  
  235. REM ===============
  236. REM Error Controls:
  237. REM ===============
  238.  
  239. :CheckErrors
  240. :: 'IncludeHiddenFiles' Value check.
  241. If /I "%IncludeHiddenFiles%" NEQ "True" If /I "%IncludeHiddenFiles%" NEQ "False" (
  242. Echo [x] Error parsing parameter 'IncludeHiddenFiles',
  243. Echo     value '%IncludeHiddenFiles%' is not a Boolean value.
  244. Pause&Exit
  245. )
  246.  
  247. Goto:EOF

Espero que a alguien le sirva de utilidad.

Saludos!


« Última modificación: 14 Abril 2014, 04:39 am por Eleкtro » En línea



FranciskoAsdf

Desconectado Desconectado

Mensajes: 231


Ni bueno, ni malo. Solo nada.


Ver Perfil WWW
Re: [APORTE] [BATCH] Files2List
« Respuesta #1 en: 14 Abril 2014, 04:00 am »

Gracias por el aporte!, a mi me servirá de mucho en mi trabajo, asi que gracias!!.


En línea

Asdf debería ser algún tipo de función.
Eleкtro
Ex-Staff
*
Desconectado Desconectado

Mensajes: 9.866



Ver Perfil
Re: [APORTE] [BATCH] Files2List
« Respuesta #2 en: 14 Abril 2014, 04:40 am »

Gracias por el aporte!, a mi me servirá de mucho en mi trabajo, asi que gracias!!.

Gracias a ti por comentar.

PD: He actualizado el código en el post de arriba (son pequeños cambios insignificantes).

Saludos!
En línea



Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
[Batch] Un pequeño aporte « 1 2 »
Scripting
najmuddin 13 8,172 Último mensaje 25 Junio 2008, 21:21 pm
por najmuddin
[Batch] Aporte, Soy electronico
Scripting
Geormarsch 5 4,087 Último mensaje 9 Enero 2012, 10:24 am
por leogtz
[APORTE] [BATCH] Acentos en los programas Batch - La mejor solución
Scripting
Príncipe_Azul 5 13,083 Último mensaje 2 Mayo 2014, 00:09 am
por cyberalejo17
[APORTE] [BATCH] Filesize Truncator
Scripting
Eleкtro 0 1,579 Último mensaje 14 Abril 2014, 05:01 am
por Eleкtro
[aporte][batch] 3 en raya en batch
Scripting
shadowhunter 1 3,038 Último mensaje 24 Junio 2014, 12:55 pm
por shadowhunter
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines