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

 

 


Tema destacado: Recuerda que debes registrarte en el foro para poder participar (preguntar y responder)


+  Foro de elhacker.net
|-+  Programación
| |-+  Scripting
| | |-+  Recorrer directorios y generar log (BATCH)
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Recorrer directorios y generar log (BATCH)  (Leído 15,793 veces)
Dany3j

Desconectado Desconectado

Mensajes: 142


Echo "Aprendiendo Batch."


Ver Perfil
Recorrer directorios y generar log (BATCH)
« en: 29 Junio 2011, 18:27 pm »

Hello.. sera que es posible recorrer los directorio y subdirectorios y generar un log.txt con todo lo escaneado algo o algo asi nombre de carpeta y los archivos como lo muestra la funcion dir no tengo ni idea por donde emprezar  :-\


« Última modificación: 29 Junio 2011, 18:33 pm por Leo Gutiérrez. » En línea

"Pensando en Batch" XD
SuperDraco


Desconectado Desconectado

Mensajes: 2.505


Crew Dragon


Ver Perfil
Re: Recorrer directorios y generar log (BATCH)
« Respuesta #1 en: 29 Junio 2011, 19:43 pm »

 :¬¬ Me has pillado con ganas de hacerle el trabajo a los demás  :¬¬

Te recomiendo leer un manual básico, todo eso lo aprendes fácil.

Solamente tienes que redireccionar. (>, >>)

Código
  1. Dir /B /S > Log.txt



Código
  1. Dir /?

Código:
/A          Muestra los archivos con los atributos especificados.
atributos    D  Directorios             
             H  Archivos ocultos       
             S  Archivos de sistema
             -  Prefijo de exclusión



Algo más sofisticado, creo que así es más o menos como lo quieres (hecho en 5 minutos +o- XD):

Código
  1. @echo off
  2. Title=Foro.Elhacker.Net
  3.  
  4. REM Simple LOG de directorios.
  5. REM By PiToLoKo
  6. REM Foro.Elhacker.Net
  7.  
  8. echo+   >> "%temp%\Log.txt"
  9. echo ============================= >> "%temp%\Log.txt"
  10. Echo Fecha del escaneo: %Date%     >> "%temp%\Log.txt"
  11. echo ============================= >> "%temp%\Log.txt"
  12. echo+   >> "%temp%\Log.txt"
  13.  
  14. Echo+ & echo+ El directorio actual es:
  15. Echo  %cd%
  16. Echo+ & echo+ Pulse una tecla para empezar el escaneo...
  17. pause >nul 2>&1
  18.  
  19. For /F "tokens=*" %%a in ('Dir /B /S /A:D') do (
  20. Set folder=%%a
  21. Call :Scan
  22. )
  23.  
  24. Title=foro.elhacker.net
  25. echo  ===========================
  26. Echo   El escaneo ha finalizado.
  27. echo  ===========================
  28. Notepad "%temp%\Log.txt"
  29.  
  30. :Scan
  31. Title=Escaneo en progreso..."
  32. Echo Escaneando "%folder%"
  33.  
  34. Echo -=[ %folder% ]=- >> "%temp%\Log.txt"
  35. echo+  >> "%temp%\Log.txt"
  36.  
  37. Dir /B /A-D "%folder%">> "%temp%\Log.txt"
  38. echo+ >> "%temp%\Log.txt"
  39.  
  40. goto:eof
  41.  

En fin, se pueden hacer muchas cosas... xD


« Última modificación: 29 Junio 2011, 20:25 pm por pitoloko » En línea

No he vuelto, solo estoy de paso.
Dany3j

Desconectado Desconectado

Mensajes: 142


Echo "Aprendiendo Batch."


Ver Perfil
Re: Recorrer directorios y generar log (BATCH)
« Respuesta #2 en: 29 Junio 2011, 20:48 pm »

A ok voy a probar e intento modificar con la funcion que quiero realizar... Es que la verdad a veces veo unos comandos que ni me imagino de donde salieron como hiciste para saber tanto de Batch pitoloko  :-\
En línea

"Pensando en Batch" XD
SuperDraco


Desconectado Desconectado

Mensajes: 2.505


Crew Dragon


Ver Perfil
Re: Recorrer directorios y generar log (BATCH)
« Respuesta #3 en: 29 Junio 2011, 21:25 pm »

como hiciste para saber tanto de Batch pitoloko  :-\

LEER manuales  :¬¬

LEER la ayuda del comando "/?"

Y practicar  :xD

Y postear mis dudas, como tú  :-[

Aqui el verdadero experto en Batch es el mod xD
En línea

No he vuelto, solo estoy de paso.
Dany3j

Desconectado Desconectado

Mensajes: 142


Echo "Aprendiendo Batch."


Ver Perfil
Re: Recorrer directorios y generar log (BATCH)
« Respuesta #4 en: 29 Junio 2011, 22:33 pm »

A ok por eso me estoy poniendo a estudiar bastande empezando por lo basico. Pero esto es para hacer un pequeña utilidad para limpiar el pendrive algo parecido a un pequeño antivirus en batch que me cambie los atributos de aarchivos y carpetas ocultas borre los archivos .exe meñores a "x" tamaño las carpetas vacias y al final me de un reporte de lo que ha hecho... lo unico que eso esta muy avanzado para mi conocimiento  :-\ pero bueno espero con esfuerzo y la ayuda de expertos como tu y los moderadores del foro poder hacerlo pronto...  :(
En línea

"Pensando en Batch" XD
SuperDraco


Desconectado Desconectado

Mensajes: 2.505


Crew Dragon


Ver Perfil
Re: Recorrer directorios y generar log (BATCH)
« Respuesta #5 en: 29 Junio 2011, 22:57 pm »

Lo de las carpetas 0 bytes, en batch me dio malos resultados, el comando DIR me mentía  :xD, así que te recomiendo este vbs que me dijo Novlucker, lo ejecutas desde el batch y listo...


"Comprobar_Carpetas_vacias.vbs"

Código
  1.  
  2. Dim objFileSystem, objTheFolder
  3. Set objFileSystem = CreateObject("Scripting.FileSystemObject")
  4. Set objTheFolder = objFileSystem.GetFolder(wscript.arguments(0))
  5.  
  6. If objTheFolder.size > 1 then
  7. wscript.quit(0)
  8. else
  9. wscript.quit(1)
  10. end if
  11.  


para usarlo en un batch, puedes hacerlo por ejemplo así:

Código
  1. @echo off
  2. :Carpetas vacias
  3. For /F "Tokens=*" %%a in ('dir /B /S /A:D "RUTA_DE_LA_CARPETA"') do (
  4. set folder=%%a
  5. call :Comprobar carpeta)
  6.  
  7.  
  8. :Comprobar carpeta
  9. "Comprobar_Carpetas_vacias.vbs" "!folder!"
  10. If %errorlevel% EQU 0 (
  11. goto:eof
  12. ) ELSE (
  13. rd /q "!carpeta!\"
  14. goto:eof
  15. )



Para los archivos menores de X bytes. Puedes usar esto:

~z - display the file size

Aunque como ya he dicho, no recomiendo usarlo sobre carpetas, engaña mucho. En cambio si lo usas sobre archivos nunca me ha dado problemas, y he hecho muchisimas pruebas :xD

en fin aqui un script que posteé hace tiempo:

Código
  1. @echo off
  2. setlocal enabledelayedexpansion
  3.  
  4. for /f "tokens=*" %%a in ('dir /B /s /A-D "%systemdrive%\*.exe"') do (
  5. set archivo=%%a
  6. set size=%%~za
  7. call :log
  8. )
  9.  
  10.  
  11. :log
  12. If !size! EQU 0 (
  13. echo !archivo! >> log.txt
  14. echo !size! >> log.txt
  15. echo+ >> log.txt
  16. del /Q /F "!archivo!"
  17. goto:eof
  18. ) ELSE (
  19. goto:eof)

Modificalo a tu gusto  :xD

También puedes usar el script de Novlucker, el vbs, solo hay que modificar una cosa:

Set objTheFolder = objFileSystem.GetFolder


Set objTheFolder = objFileSystem.getfile

PD: objTheFolder  no importa, es el nombre de la variable.

saludos.
« Última modificación: 29 Junio 2011, 23:06 pm por pitoloko » En línea

No he vuelto, solo estoy de paso.
Dany3j

Desconectado Desconectado

Mensajes: 142


Echo "Aprendiendo Batch."


Ver Perfil
Re: Recorrer directorios y generar log (BATCH)
« Respuesta #6 en: 29 Junio 2011, 23:14 pm »

Voy a ver que hago con tanto codigo por lo menos separados los hago funcionar bien y les hago pequeñas modificaciones  :rolleyes: lo dificil va a ser para unir todo eso y llegar a lo que quiero pero vamos a ver si lo puedo hacer nada es imposible para una mente dispuesta dicen por hay.  :laugh:
En línea

"Pensando en Batch" XD
SuperDraco


Desconectado Desconectado

Mensajes: 2.505


Crew Dragon


Ver Perfil
Re: Recorrer directorios y generar log (BATCH)
« Respuesta #7 en: 30 Junio 2011, 01:06 am »

Voy a ver que hago con tanto codigo por lo menos separados los hago funcionar bien y les hago pequeñas modificaciones  :rolleyes: lo dificil va a ser para unir todo eso y llegar a lo que quiero pero vamos a ver si lo puedo hacer nada es imposible para una mente dispuesta dicen por hay.  :laugh:

Unificarlo es fácil, ya te he dado lo más dificil.

Por cierto, se me olvidó comentar que para eliminar carpetas vacías, conviene borrar primero los archivos ocultos "desktop.ini" que genera automáticamente windows. A menos que uses un icono personalizado para cada carpeta... es un archivo inservible, y obviamente esas carpetas ya no se considerarían vacías, aqui otro ejemplo mio sacado de un batch por si te sirve xD


Código
  1. @echo off
  2. if not exist "Comprobar_accesos_directos_rotos.vbs" (goto :next37)
  3. if not exist "Comprobar_Carpetas_vacias.vbs" (goto :next37)
  4.  
  5. setlocal enabledelayedexpansion
  6.  
  7.  
  8. :Desktop.ini
  9. For /F "Tokens=*" %%a in ('dir /B /S /A H "%appdata%\Microsoft\Windows\Start Menu\Programs\*desktop.ini"') do (del /q /F /A H "%%a")
  10. For /F "Tokens=*" %%a in ('dir /B /S /A H "%ProgramData%\Microsoft\Windows\Start Menu\Programs\*desktop.ini"') do (del /q /F /A H "%%a")
  11.  
  12.  
  13.  
  14. :Accesos directos rotos
  15. For /F "Tokens=*" %%a in ('dir /B /S "%appdata%\Microsoft\Windows\Start Menu\Programs\*.lnk"') do (
  16. Set archivo="%%a"
  17. call :comprobar)
  18.  
  19. For /F "Tokens=*" %%a in ('dir /B /S "%ProgramData%\Microsoft\Windows\Start Menu\Programs\*.lnk"') do (
  20. Set archivo="%%a"
  21. call :comprobar)
  22.  
  23.  
  24.  
  25. :Carpetas vacias
  26. For /F "Tokens=*" %%a in ('dir /B /S /A:D "%appdata%\Microsoft\Windows\Start Menu\Programs\"') do (
  27. set carpeta=%%a
  28. call :Comprobar carpeta)
  29.  
  30. For /F "Tokens=*" %%a in ('dir /B /S /A:D "%ProgramData%\Microsoft\Windows\Start Menu\Programs\"') do (
  31. set carpeta=%%a
  32. call :Comprobar carpeta)
  33.  
  34.  
  35. setlocal disabledelayedexpansion
  36.  
  37.  
  38.  
  39. goto :next37
  40.  
  41.  
  42.  
  43. :Comprobar
  44. Comprobar_accesos_directos_rotos.vbs !archivo!
  45.  
  46. If %errorlevel% EQU 0 (
  47. goto:eof
  48. ) ELSE (
  49. Del /Q /F !archivo!
  50. goto:eof
  51. )
  52.  
  53.  
  54. :Comprobar carpeta
  55. "Comprobar_Carpetas_vacias.vbs" "!carpeta!"
  56.  
  57. If %errorlevel% EQU 0 (
  58. goto:eof
  59. ) ELSE (
  60. rd /q "!carpeta!\"
  61. goto:eof
  62. )




Comprobar_accesos_directos_rotos.vbs

Código
  1. set objshell = createobject("wscript.shell")
  2. set objlink = objshell.createshortcut(wscript.arguments(0))
  3. set objfso = createobject("scripting.filesystemobject")
  4. if objfso.fileexists(objlink.targetpath) then
  5. wscript.quit(0)
  6. else
  7. wscript.quit(1)
  8. end if
En línea

No he vuelto, solo estoy de paso.
Dany3j

Desconectado Desconectado

Mensajes: 142


Echo "Aprendiendo Batch."


Ver Perfil
Re: Recorrer directorios y generar log (BATCH)
« Respuesta #8 en: 30 Junio 2011, 01:39 am »

Si es cierto muchasimas gracias por todo pitoloko manos a la obra... voy a terminar mi pequeña herramienta despues publico como me fue.  ;-)
En línea

"Pensando en Batch" XD
Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
[Batch] Recorrer directorio
Scripting
acoevil 3 10,258 Último mensaje 29 Enero 2012, 19:43 pm
por leogtz
[BATCH] Código para bloquear archivos y/o directorios
Scripting
scalverth 3 3,714 Último mensaje 5 Octubre 2012, 15:34 pm
por Eleкtro
Recorrer directorios.
Programación C/C++
Stakewinner00 2 2,051 Último mensaje 24 Febrero 2013, 23:02 pm
por Stakewinner00
recorrer todos los drives batch
Scripting
asdexiva 0 1,737 Último mensaje 6 Julio 2014, 20:32 pm
por asdexiva
[Batch] Recorrer un fichero asignando usuarios a grupos determinados
Scripting
gregory90 6 3,152 Último mensaje 4 Febrero 2018, 12:24 pm
por gregory90
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines