[Batch] [vbs] ¿Un script para buscar archivos de cero bytes?

Iniciado por SuperDraco, 13 Mayo 2011, 20:09 PM

0 Miembros y 1 Visitante están viendo este tema.

SuperDraco

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 (DOS) [Seleccionar]
@echo off
for /f "tokens=*" %%a in ('dir /B /s "c:\program files (x86)"') do (
echo %%~za "%%a"
pause >nul
)








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 (dos) [Seleccionar]

@echo off
setlocal enabledelayedexpansion

for /f "tokens=*" %%a in ('dir /B /s /A-D "%systemdrive%\*"') do (
set archivo=%%a
set size=%%~za
call :log
)


:log
If !size! EQU 0 (
echo !archivo! >> log.txt
echo !size! >> log.txt
echo+ >> log.txt
del /Q /F "!archivo!"
goto:eof
) ELSE (
goto:eof)
No he vuelto, solo estoy de paso.