Autor
|
Tema: Crear batch que tome valores dentro de un .txt y borrarlo dependiendo dela fecha (Leído 3,054 veces)
|
.:UND3R:.
|
Hola a todos, saben estoy un poco perdido por como empezar, pero les explicaré más menos que es lo que me gustaría hacer, a ver si me pueden echar una mano, tengo la siguiente lista como ejemplo archivo.txt:
juan // 30-05-2012 o si quiero puedo ponerlo 31/05/2012 (me da igual) pedro // 01-06-2012 maria // 12-12-2012
Me gustaría hacer un batch que al ejecutarlo, este tome la fecha actual y elimine las líneas que contentan una fecha anterior a esta, en este caso (hoy 31-05-2012), eliminaría a juan, quedando el archivo.txt de la siguiente forma:
pedro // 01-06-2012 maria // 12-12-2012
Me sería de gran ayuda, tengo un programa de control de accesos, el en un archivo de texto contiene las ID de los usuarios que pueden ingresar, y todos los días debo ver la fecha y buscar dentro de una inmensa lista cuales, cual de todos los usuarios ya está expirado, espero su ayuda, muchas gracias.
|
|
|
En línea
|
Solicitudes de crack, keygen, serial solo a través de mensajes privados (PM)
|
|
|
Eleкtro
Ex-Staff
Desconectado
Mensajes: 9.818
|
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:
|
|
|
En línea
|
|
|
|
|
$Edu$
Desconectado
Mensajes: 1.842
|
No sos el unico que esta loco UND3R viste? jajaja
|
|
|
En línea
|
|
|
|
|
Mensajes similares |
|
Asunto |
Iniciado por |
Respuestas |
Vistas |
Último mensaje |
|
|
Crear batch que modifique valores de firefox about:config??? (SOLUCIONADO)
Scripting
|
SuperDraco
|
2
|
3,316
|
11 Noviembre 2009, 19:15 pm
por SuperDraco
|
|
|
Batch. script ejecute distintos .exes dependiendo fecha
Scripting
|
Woody123
|
4
|
5,497
|
26 Marzo 2010, 17:11 pm
por WBDB
|
|
|
(Solucionado)[BATCH]Como ajustar las medidas del CMD,dependiendo del resultado d
Scripting
|
SuperDraco
|
4
|
7,000
|
23 Enero 2011, 03:06 am
por SuperDraco
|
|
|
ajustar canvas dentro de un div dependiendo de la resolucion de pantalla
Desarrollo Web
|
OssoH
|
2
|
5,741
|
10 Abril 2012, 16:59 pm
por OssoH
|
|
|
crear batch que modifique la fecha windows7
Scripting
|
7emiliosk8
|
3
|
2,016
|
6 Marzo 2017, 22:56 pm
por Eleкtro
|
|