Que bien poder ayudarte
.:UND3R:. No haré comentarios, En el bat te lo dejo todo muy bien explicado xD
Saludos.
Elektro H@cker / Pitoloko.
Fechas Killer xD.bat@Echo OFF
Title By Elektro H@cker
:: By Elektro H@cker
:: Visita Foro.ElHacker.Net
Setlocal enabledelayedexpansion
REM yyyymmdd
Set "Hoy=%date:~6,4%%date:~3,2%%date:~0,2%"
Set "Archivo=test.txt"
If NOT Exist "%archivo%" (Exit /B 1) ELSE (Copy /-Y "%ARCHIVO%" "%ARCHIVO%_BACKUP" & CLS)
Echo Fecha actual [%DATE:/=-%] | MORE
Echo [+] Buscando usuarios con fecha expirada... | MORE
Call :Check "%archivo%"
:Check
REM %%a=Nombre, %%b=Fecha
For /F "tokens=1,2,* Delims=/" %%a in ('Type %1') do (
Set "Fecha=%%b"
Set "Fecha=!Fecha:-=!"
Set "Fecha=!Fecha: =!"
REM yyyymmdd
Set "Fecha=!Fecha:~4,4!!Fecha:~2,2!!Fecha:~0,2!"
REM Un pequeño control de errores por si se encuentra alguna fecha de MENOS (No de más) de 8 dígitos, O algún otro caracter que no sea un número. No lo uses si prefieres ganar tiempo de ejecución xD.
Echo "!Fecha!"| Findstr "^\"[0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9]\"$" >NUL || (Echo Se ha encontrado una fecha NO valida y no se puede continuar | MORE & Echo Revise la linea de "%%a %%b" y repita el proceso. | MORE & Pause & Exit /B 1)
REM Un TEST para ir mostrando las comparaciones...
REM Echo %%a ^(!fecha!^) ^(!hoy!^)
If "!Fecha!" LSS "!Hoy!" (
Echo %%a %%b
Set "Archivo=%~1.tmp"
Set "Nombre=%%a"
Set "Nombre=!Nombre: =.!"
Set "Fecha=%%b"
Set "Fecha=!Fecha:~1!"
Findstr /V "!Nombre!./.!Fecha!" "%Archivo%">"!Archivo!" || (Echo Ha ocurrido un error inesperado, No se pudo borrar al usuario "%%a %%b" & Pause)
Del /Q %1
Ren "%~1.tmp" "%~1"
Set "Archivo=%~1"
Set /A Count+=1
Goto :Break
REM Si te quieres ahorrar bastante tiempo de ejecución a costa de mostrar correctamente algunos datos, Usa esta forma.
REM Al encontrar una fecha expirada, Elimina todos los resultados de una sola vez.
REM
REM If "!Fecha!" LSS "!Hoy!" (
REM Echo Eliminando a usuarios con fecha: %%b
REM Set "Archivo=%~1.tmp"
REM Findstr /V "%%b" "%Archivo%">"!Archivo!" || (Echo Ha ocurrido un error inesperado, No se pudo encontrar la fecha "%%b" & Pause)
REM Del /Q %1 && Ren "%~1.tmp" "%~1" && Set "Archivo=%~1" && Set /A Count+=1
REM Goto :Break
)
)
Goto :Fin
:Break
Call :Check "!Archivo!"
:Fin
If defined COUNT (Echo+ & Echo [+] Se han borrado %Count% Elementos. | MORE) ELSE (Echo+ & Echo [+] No se han encontrado fechas expiradas. | MORE)
Pause
Exit
test.txtindiana jones // 02-05-2012
juan // 30-05-2012
pablo // 01-06-2012
pedro // 06-16-2012
maria // 12-12-2012
magan // 25-03-2012
mojon // 01-04-2012
Terminator // 31-01-2012
melchor // 05-02-2012
Output: