Título: Script para obtener las subcarpetas de las subcarpetas de una carpeta Publicado por: ‡‡‡ Ðξλ†Ћ Щλ†ζЋ ‡‡‡ en 28 Diciembre 2008, 06:03 am Hola como están ;)
Como ustedes saben, Visual Basic Script tiene la opción de devolvernos las subcarpetas que se encuentran en la carpeta que le hayamos indicado. Código
Esto nos mostraría: Carpeta C: |__Subcarpetas. El detalle es que no tiene un metodo (que yo sepa) para devolvernos las subcarpetas de las subcarpetas, es decir: Carpeta C: |___Subcarpetas |_____Subcarpetas |_____Subcarpetas El siguiente Script permite obtener todas las subcarpetas, de las subcarpetas, de la carpeta que le hayamos indicado, esto es: Carpeta Inicial (la que se quiera) | |____Subcarpeta 1 Subcarpeta 2 | | ___|____ |___Subcarpetas | | |___etc... |__etc... |_etc... Funcionamiento: Primero hace una serie de preguntas para que indiquemos sobre que carpeta querermos obtener sus subcarpetas, ademas de la ruta donde se va a crear un archivo de texto. Se crea un archivo de texto con el nombre dirs.txt. En la primera linea el script escribe la ruta de la carpeta inicial que indicamos. Despues el script va a leer la primera linea y anexará en dicho archivo, las subcarpetas dentro de la carpeta que indicamos. Asi, el script ira leyendo linea por linea, y tomará cada linea (ruta) como carpeta inicial, anexando al archivo, las subcarpetas contenidas en la ahora carpeta inicial. Si encuentra mas subcarpetas, las va anexando al archivo; si no encuentra mas en la carpeta inicial actual, no anexa nada y lee la siguiente linea del archivo. * Una vez terminado el proceso del script, se mandará un mensaje indicandolo. Si se tarda es porque han seleccionado una carpeta con muchas carpetas. Tengan paciencia y esperen a que aparezca el mensaje. Para que nos puede servir: Dependiendo de lo que quieran hacer, y con el codigo indicado Puede funcionar como buscador de carpetas o archivos. Nos puede permitir obtener todos los archivos (por ej jpg, mpg, etc) dentro de cada subcarpeta, para copiarlos a una carpeta en particular. Realmente el codigo lo hice para ver si lo podía hacer, pero no pense en alguna utilidad en especifico, asi que espero que les sea util, y cualquier funcionalidad que le encuentren, agradecería que lo comentaran. Aqui está el código: Código
Comentarios: El script funciona aunque no se tengan privilegios de administrador. Detalles/Errores: (* UNICAMENTE SI LA CARPETA QUE INDICARON CONTIENE LA DE ADMINISTRADOR O USUARIO TIPO ADMINISTRADOR) Si la carpeta inicial contiene las carpetas de un usuario administrador, teniendo contraseña en tal, y lo ejecutaran en un usuario que no sea del tipo administrador,, o si lo ejecutaran en un usuario tipo administrador, pero en el usuario Administrador (el que sale cuando presionamos la tecla F8 -> modo seguro) y este tuviera contraseña, se generaría un error de tipo Acceso denegado y se terminaría el script antes de haber acabado su proceso. Por tal motivo agregué la linea On Error Resume Next, lo que hace al Script totalmente funcional, con un pequeño detalle: Al generarse el error, va dejando lineas en blanco, dentro del archivo, que corresponden a las carpetas que no nos permite acceder. Este detalle es insignificante y no afecta en la obtencion de las subcarpetas (a las que tengamos acceso, que son la mayoría, incluyendo Windows, System32, Archivos de programa, etc). De todos modos quise comentarselos, porque si les sirve y le agregan codigo, y su codigo tiene un error, este no se mostraría. Dudas: Un favor: he buscado y buscado, y buscado y buscado, información acerca de manipulación de errores en VB en general, y no he encontrado nada, y lo que he encontrado no le he entendido lo suficiente para aplicarlo. Por ejemplo en este script, agregue if err.Number=x (el de tipo acceso denegado) then, etc... y los tres primeros errores de ese tipo, los podía manipular, pero al cuarto error me volvio a saltar Acceso Denegado. Alguien conoce una pagina, una liga, o sobre todo si tienen un tutorial, donde se pueda conocer cada tipo de error, su numero, y como manipularlo? Por otro lado, les quiero pedir que lean el post en http://foro.elhacker.net/dudas_generales/que_lenguajes_recomiendan_para_hacer_programas_de_hacking-t239873.0.html (http://foro.elhacker.net/dudas_generales/que_lenguajes_recomiendan_para_hacer_programas_de_hacking-t239873.0.html). Quien mejor que programadores para que me puedan ayudar a resolver tal duda. Es referente a que lenguajes me recomiendan para hacer programas de hacking, tanto que se pueda programar en Windows y Linux al mismo tiempo, y que pueda funcionar tanto en Windows y en Linux. Pues despues de tanto rollo, me despido y espero que le encuentren buena utilidad al script. Un saludo a todos :laugh: Título: Re: Script para obtener las subcarpetas de las subcarpetas de una carpeta Publicado por: kraszic en 28 Diciembre 2008, 13:25 pm Esta muy bien el code, siempre es bueno intentar hacer cosas y ver q te salgan.
Bueno, aqui dejo yo mi code en batch que creo que es mas facil que el anterior. Tiene la opcion de mostrar archivos y carpetas. Código
Alomejor ves, el code un poco largo pero me gusta que quede completo. En batch, el code se resume a esto: FOR /R %%i in (*) DO echo %%i (para mostrar archivos) FOR /r /d %%i in (*) DO echo %%i (para mostrar carpetas) saludos Título: Re: Script para obtener las subcarpetas de las subcarpetas de una carpeta Publicado por: ‡‡‡ Ðξλ†Ћ Щλ†ζЋ ‡‡‡ en 29 Diciembre 2008, 03:45 am kraszic se ve bueno el code, ademas de sencillo :)
La verdad es que a batch no le termino de entender :huh: >:( :( Por ejemplo, el FOR /R y FOR /r /d, no se para que se usan. Pero bueno, seguimos en el aprendizaje de la programación y a batch le tendré que dedicar mas rato. Gracias por el aporte, man. Un saludo :) Título: Re: Script para obtener las subcarpetas de las subcarpetas de una carpeta Publicado por: Novlucker en 29 Diciembre 2008, 15:26 pm Buen trabajo BlaKore_Alpha
Aquí un par de scripts que hacen lo mismo, pero con un par de problemas (uno de ellos sin razón alguna) :¬¬ , en ambos me he salteado la parte de pedir los datos al usuario y he pasado directamente a generar el listado :P Código
El "problema" de este son los caracteres con los que ms-dos tiene problemas, como ser "ú" ... ej: "C:\Documents and Settings\Novlucker\Mis documentos\Mi m£sica" Por lo que sería necesario aplicar algún tipo de filtro a estos caracteres, sería cuestión de un simple replace :P Ahora el otro ... Código
En este caso por alguna extraña razón, en el caso de elegir el directorio raíz da error de "Acceso denegado" cuando llega a la carpeta Windows, por lo que no se puede acceder a esta carpeta, lo extraño es que si pasamos la carpeta win como parámetro inicial si funciona, es decir, NO puede ser por permisos de usuario :-\ , así que en algún momento voy a revisarlo a ver que ocurre. A pesar de estos problemas, estos scripts tienen la ventaja de ser algo más rápidos que el que has creado :P Saludos Título: Re: Script para obtener las subcarpetas de las subcarpetas de una carpeta Publicado por: ‡‡‡ Ðξλ†Ћ Щλ†ζЋ ‡‡‡ en 30 Diciembre 2008, 05:46 am Antes que nada, gracias por el tiempo dedicado en leer el post. :laugh:
Que bueno que les haya agradado, y ojala les pueda servir de algo. ;D Seguimos en contacto. Un saludo. P.D. Novlucker, checaste que use el tip que me comentaste de: For var=1 to 5 x.SkipLine Next En la ejecución del script hubiera aumentado el tiempo de forma notoria, como lo pensaba hacer en un inicio. Título: Re: Script para obtener las subcarpetas de las subcarpetas de una carpeta Publicado por: ‡‡‡ Ðξλ†Ћ Щλ†ζЋ ‡‡‡ en 1 Enero 2009, 07:06 am Buenas amigos:
Novlucker, una duda: Los codes funcionan juntos o separados? Algo he de estar haciendo mal, porque si ejecuto el primer code independiente, solo crea el archivo de texto, pero sin texto. Y si ejecuto el 2do independiente, crea el archivo, pero se queda hasta C:\Archivos de programa\WindowsUpdate Bueno, solo es un comentario. Ya si lo requiriera, te volvería a consultar... Un saludo. Título: Re: Script para obtener las subcarpetas de las subcarpetas de una carpeta Publicado por: Novlucker en 1 Enero 2009, 09:06 am Son independientes, el primero lo he modificado, ya que había dejado creada la variable IDir, pero la creaba luego de llamarla :xD
Y el segundo a mi me va hasta la carpeta windows, por problemas con los permisos supuestamente :¬¬ , así que quita el On error resume next y prueba nuevamente a ver donde te sale el error :P Saludos Título: Re: Script para obtener las subcarpetas de las subcarpetas de una carpeta Publicado por: ‡‡‡ Ðξλ†Ћ Щλ†ζЋ ‡‡‡ en 2 Enero 2009, 00:32 am Novlucker:
Pues le quite On Error Resume Next, y efectivamente el problema es de acceso. En mi pc, se queda en C:\Archivos de programa\WindowsUpdate y luego manda el mensaje de error. Pero bueno, supongo que este tipo de scripts tienen ese detalle de privilegios, verdad? Lo importante es aportar... No pense que se pudieran aplicar funciones en un vbscript, ademas de que las funciones me cuestan un poco de trabajo entender, pero ya aprendí algo nuevo ;). Pues seguimos en contacto :). Un saludo a todos. Título: Re: Script para obtener las subcarpetas de las subcarpetas de una carpeta Publicado por: Novlucker en 2 Enero 2009, 12:19 pm Si, pero como he dicho, lo de los permisos es extraño, intenta cambiando el valor de IDir con la ruta de la carpeta donde tienes problemas (C:\Archivos de programa\WindowsUpdate), y verás como lista las subcarpetas :(
En definitiva, no puede ser que de problema de privilegios y que poniendo la carpeta directamente permita hacerlo :-\ Saludos Título: Re: Script para obtener las subcarpetas de las subcarpetas de una carpeta Publicado por: Novlucker en 5 Enero 2009, 12:41 pm Yo otra vez :P
Mirando un poco más detenidamente tu code he visto que declaras muchas veces el objeto Scripting.filesystemobject, y con varios nombres distintos (oCar, oLArc, oArch, etc), pero esto no es necesario, ya que de este modo creas una instancia de este objeto por cada nombre, sin embargo con que lo hagas una sola vez en todo el code ya es suficiente ;) Por otro lado, ahora si, he modificado mi code y lista todos los directorios en más o menos un segundo ::) Código
Diferencia con el anterior, solo he cambiado de lugar el "On error resume next" :¬¬ Saludos Título: Re: Script para obtener las subcarpetas de las subcarpetas de una carpeta Publicado por: ‡‡‡ Ðξλ†Ћ Щλ†ζЋ ‡‡‡ en 13 Enero 2009, 23:20 pm Que onda, como estan: ;D
Perdon, me extravie un poco por el trabajo, y luego por una gripa que me dio :-X. Citar he visto que declaras muchas veces el objeto Scripting.filesystemobject, y con varios nombres distintos (oCar, oLArc, oArch, etc), pero esto no es necesario, ya que de este modo creas una instancia de este objeto por cada nombre, sin embargo con que lo hagas una sola vez en todo el code ya es suficiente Si amigo, es lo que estaba viendo en tu code: Citar Set objfso = createobject("scripting.filesystemobject") Set RegFile = objfso.createtextfile("RegFile.txt",True) Set IDir = objfso.getfolder("c:\") Tu disculparas, pero como te comenté, soy nuevo en VBS. Nada mas porque le dedique bastante tiempo a VB antes, lo pude hacer, pero incluso el manejo de estos objetos es nuevo para mi. Gracias por el tip :laugh:. Me falta mucho por aprender, pero ya estoy leyendo lo nuevo que has escrito en tus tutos, para volverme todo un master ;D Ahora, estuve viendo tu code. Esta muy sencillo y mas compacto que el mio :o. Esta muy bueno ;) Lo que me falta por aprender!!! Pues un saludo amigo. :) |