Título: Borrar archivo con nombre del directorio. BATCH Publicado por: Dany3j en 20 Julio 2011, 21:45 pm hello de nuevo..
Esto tratando de hacer algo un poco facil pero la verdad no logro como empezar Quiero crear una utilidad que borrer un archivo.exe dentro de una carpeta solo si el archivo tiene el mismo nombre que el directorio en el que se encuentra y solo si es menor de 500kb por ejemplo. Tengo en C:/test/ el archivo test1.exe y test.exe en esta ocacion borraria la solo test.exe si es menor a 500kb pero a su vez hay una carpeta llamada test1/ dentro de test/ que contiene un archivo test1.exe menor a 500kb que debe borrarlo tambien sin afectar los otros archivos que esten dentro de los directorio. Una vez terminado de borrar imprimir los archivo borrados menores de 500kb y los no borrados menores de un 1000kb asi como tambien mostrar... Noc a mi me parece un poco dificil por eso no he adjuntado ningun codigo. Título: Re: Borrar archivo con nombre del directorio. BATCH Publicado por: SuperDraco en 21 Julio 2011, 01:22 am Hombre, el nivel de ese ejercicio no es tán básico xD
Te he echo este script, a ver que te parece... :P EDITO: no se si leiste mi comentarió,pero he tardado un poco más en corregir unos errores que tenía xD, siento la demora... (http://img32.imageshack.us/img32/1494/prtscrcaptures.jpg) (http://img121.imageshack.us/img121/71/prtscrcapture2x.jpg) Bueno, espero que te sirva, al menos como idea ;) PD: Para usar mi script en subdirectorios, debes usar "DIR /B /S" y cambiar y añadir unas cosas más para filtrar los nombres largos, pero bueno, eso te lo dejo a ti, ya me lo he currado bastante y no es plan de hacertelo como deseas al 100% :xD Código
Título: Re: Borrar archivo con nombre del directorio. BATCH Publicado por: leogtz en 21 Julio 2011, 07:36 am Aquí está mi solución, recién salida del horno, lo bonito del código es la función "dirname"
que obtiene el directorio en el cual se encuentra un archivo, la función utiliza recursividad y expresión regular. Miren: Citar C:\Users\leo>dirname c:\Users\leo\HijackThis.exe [leo\] C:\Users\leo>dirname "c:\Users\leo\Configuración local" [leo\] C:\Users\leo>dirname "c:\Users\leo\Desktop\BeJeweled 2 .lnk" [Desktop\] Obtiene el directorio en el cuál está el archivo. Esta función fue necesaria para la comparación entre el nombre de archivo y el directorio en el cual se encuentra el archivo. Con esto he probado el código: Citar C:\Users\leo>cd test test.cpp y test.exe tienen 370 KB y están en el directorio test, por lo cual deben de eliminarse.C:\Users\leo\test>tree /f Listado de rutas de carpetas para el volumen Descargas El número de serie del volumen es 00000200 466D:2456 C:. ¦ lala.html ¦ log.txt ¦ test.cpp ¦ test.exe ¦ test1.txt ¦ +---algo ¦ .bash_history ¦ 10-easy-vim.pdf.zip ¦ +---test1 ¦ test1.txt ¦ +---algo .bash_history 10-easy-vim.pdf.zip algo.bash_history algo.zip C:\Users\leo\test> En el directorio test1, test1.txt debe ser eliminado porque tiene 6KB y se llama igual que su directorio. En el directorio algo, algo.bash_history debe ser eliminado porque tiene 170KB y está en el directorio algo. El script genera un log en el directorio test con la siguiente información: Citar No borrar ... lala.html, directorio : C:\Users\leo\test, size : 540KB Borrar archivo ... test.cpp, directorio : C:\Users\leo\test, size : 370KB Borrar archivo ... test.exe, directorio : C:\Users\leo\test, size : 370KB No borrar ... test1.txt, directorio : C:\Users\leo\test, size : 1KB No borrar ... .bash_history, directorio : C:\Users\leo\test\algo, size : 170KB Borrar archivo ... test1.txt, directorio : C:\Users\leo\test\test1, size : 6KB No borrar ... .bash_history, directorio : C:\Users\leo\test\test1\algo, size : 170KB Borrar archivo ... algo.bash_history, directorio : C:\Users\leo\test\test1\algo, size : 170KB Código: @echo off Saludos. Título: Re: Borrar archivo con nombre del directorio. BATCH Publicado por: SuperDraco en 21 Julio 2011, 08:19 am Aquí está mi solución, recién salida del horno, lo bonito del código es la función "dirname" Código: set shit=%%b Shit!! :silbar: Has dejado mi script por los suelos... >:( :xD Muy bueno tu script, como era de esperar!, un saludo! Título: Re: Borrar archivo con nombre del directorio. BATCH Publicado por: leogtz en 21 Julio 2011, 08:32 am Jaja, perdón por el shit, siempre les pongo nombres malos a mis variables cuando programo rápido :s.
Y tranquilo, seguro que tu script también funciona. Título: Re: Borrar archivo con nombre del directorio. BATCH Publicado por: Dany3j en 21 Julio 2011, 17:20 pm Voy a probar los script a ver que tal... Voy a ponerme estudiarlos Bastante, la verdad noc como hacen ustedes siempre salen con cosas en los script que ni me hubiera imaginado, Ojala y llegue a saber como ustedes un dia de estos. ;-)
Título: Re: Borrar archivo con nombre del directorio. BATCH Publicado por: Dany3j en 21 Julio 2011, 17:41 pm A otra cosa Estuve observando bien. Y la función funciona con imágenes Yo me refería que funcionara con archivos .exe Por ejemplo.
Archivos borrados test.exe porque es menor Archivos no borrados text1.exe porque es menor de un 1 mega pero es .exe :laugh: Título: Re: Borrar archivo con nombre del directorio. BATCH Publicado por: SuperDraco en 21 Julio 2011, 19:04 pm A otra cosa Estuve observando bien. Y la función funciona con imágenes Yo me refería que funcionara con archivos .exe Por ejemplo. :¬¬ En mi batch por ejemplo, para que solo funcione con archivos de extensión .exe cambais esto... Código: For /F "tokens=*" %%a in ('dir /B /A-D "%ruta%\*.exe"') Título: Re: Borrar archivo con nombre del directorio. BATCH Publicado por: leogtz en 21 Julio 2011, 20:19 pm Los ajustes son mínimos para que los scripts funciones, recuerda que debes de dar todos los datos posibles...
Título: Re: Borrar archivo con nombre del directorio. BATCH Publicado por: Dany3j en 22 Julio 2011, 01:55 am Ps si tienes razon Leo y Gracias a ambos... Con todo esto codigo tengo que logra algo jeje... ;-)
Título: Re: Borrar archivo con nombre del directorio. BATCH Publicado por: leogtz en 22 Julio 2011, 22:37 pm Ya edité mi código, le puse la expresión comodín para que aceptara solo los exes.
|