Listo. Después de varias pruebas, este es el que mejor me corrió, aunque debo mencionar que no es 100% efectivo. Una que otra vez pasa por alto algún borrado, pero creo que es inevitable, pues se toma ciertos segundos para verificar, y en eso si casualmente se borra un archivo, puede que no lo registre.
De todos modos quedó bueno.
Lo primero que hace es pedir que se configure la ruta a chequear, la cual queda guardada en Settings.ini, en la misma carpeta, lo que impide que se vuelva a configurar en próximas ejecuciones. En caso de querer cambiarla posteriormente se puede borrar el archivo o modificar la ruta en el mismo (CheckPath).
A partir de entonces el programa queda verificando el contenido de la ruta, y guarda el registro del mismo en Content.log, también en la misma carpeta. Esta solo se actualiza cuando se borra o agrega un archivo en la ruta chequeada. Ahora bien, el programa guarda otro registro en la carpeta %temp% que si se actualiza todo el tiempo. Esa fue la única forma en que logré que la verifiación fuese más efectiva.
Por último, el programa va mostrando en pantalla cada archivo que se borra y a su vez lo guarda un registro llamado DelReg.log, que almacena la fecha y la hora del borrado, junto al nombre del archivo.
Aquí se los dejo. Lo llamé Delete Checker v1.0:
cls
title Delete Checker [v1.0] By
^<N0ZI3
(FB
^> cls
dir /a /b /s "
%checkPath%"
>"
%~dp0Content.log"
:List
For /f "useback tokens=*"
%%R in ("
%~dp0Content.log"
) do ( )
dir /a /b /s "
%checkPath%"
>"
%~dp0Content.log"
)
dir /a /b /s "
%checkPath%"
>"
%temp%\Content.log"
:Compare
fc /c "
%temp%\Content.log" "
%~dp0Content.log"
>nulIf %errorlevel% == 0
(goto:eof
) else (move /y "
%temp%\Content.log" "
%~dp0Content.log"
>nul)
:CheckMsj
:DelMsj
If "
%time:~0,1%" == " "
(set "hora=0
%time:~1%"
) else (set "hora=
%time%"
) echo ELIMINADO
(%hora%):
%regValue% (echo ELIMINADO
^(%date% %hora%^):
%regValue%)>>"%~dp0DelReg.log"
:Read
For /f "useback tokens=*"
%%R in ("
%~dp0Settings.ini") do (set "settValue=%%R"
) set "checkPath=
%settValue:~10%"
echo.
& echo La ruta pre-configurada ya no existe.
)
:Define
set /p _Path=Indique el disco o directorio a procesar:
)
(echo CheckPath=
%checkPath%)>"
%~dp0Settings.ini"
Espero saber si te resulta útil Crisis, y a cualquiera que lo use.