Foro de elhacker.net

Programación => Scripting => Mensaje iniciado por: SuperDraco en 13 Mayo 2011, 20:09 pm



Título: [Batch] [vbs] ¿Un script para buscar archivos de cero bytes?
Publicado por: SuperDraco en 13 Mayo 2011, 20:09 pm
Hola, pues tengo echo en batch un limpiador personalizado de mi sistema, al que le quiero meter un código para encontrar y eliminar archivos de cero bytes.

El problema es que toda la informacion que he encontrado al respecto, scripts y ejemplos de otra gente, en todos siempre usan esto:

%~z1 - display the file size of %1

Lo he probado a usar con un for, como en el ejemplo de los demás: %%~za

Pero me niego a usarlo de esa manera, porque no me funciona correctamente, con la mayoria de carpetas me devuelve un valor de 0 bytes (Cuando realmente no están vacías), y luego con las que no están vacías siempre me manda el valor 4096, ni más ni menos, ¿Como se explica esto? :/

Me parece peligroso usarlo para limpiar todo el disco duro porque no funciona bien, Entonces estoy buscando alguna otra alternativa, en batch o vbs para meterlo en el batch, ya que el programa sizeof tampoco me sirve.

Aunque bueno, con las carpetas no es mi prioridad, supongo que con un dir | findstr "bytes" puedo hacerlo de momento sin que haya errores, pero ¿como puedo buscar archivos de cero bytes?

¿Alguien sabe algo?

Muchas gracias...



Aqui la prueba de que no funciona, o quizas lo estoy haciendo mal:


Código
  1. @echo off
  2. for /f "tokens=*" %%a in ('dir /B /s "c:\program files (x86)"') do (
  3. echo %%~za "%%a"
  4. )


(http://imageshack.us/m/9/5159/prtscrcapturegn.jpg)



EDITO:


Bueno, parece que al final he conseguido buenos resultados y funciona, pero con las carpetas no, así que he tenido que excluirlas del "dir":



Código
  1. @echo off
  2. setlocal enabledelayedexpansion
  3.  
  4. for /f "tokens=*" %%a in ('dir /B /s /A-D "%systemdrive%\*"') 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)