Actualmente necesito crear un script que haga lo siguiente: si se tiene la fecha de hoy, 20/07/2009, necesito que a ésta se le reste un día, entonces quedaría 19/07/2009 con hora 18:00 y luego que busque en un directorio X todos los archivos con una fecha de modificación del archivo mayor a la fecha 19/07/2009 a las 18:00 y me lo muestre o lo guarde en un archivo.
Para empezar tengo 10 días en esto, o sea, aprendiendo Perl, no soy muy hábil y no dispongo de mucho tiempo ya que tengo que hacer otras cosas, esto lo requiero para mi trabajo, porque es posible que de no hacerlo me regañen o algo parecido. Desde el 10/07/2009 estoy en esto.
He hecho varios scripts; sin embargo no consigo mi objeto.
Deseo que alguien me ayude con lo que pueda, porque parece que esto me llevará tiempo y es lo que menos tengo.
Adjunto todos los intentos que tengo para hacer diferentes cosas, la comparación de fechas es difícil, no encuentro la forma de hacerlo y he buscado por todo lado sin éxito. Esto debido a no consigo obtener el mismo formato para comparar dos fechas, la nueva fecha contra la de modificación.
Muchas gracias y espero me puedan ayudar CON TODO LO QUE PUEDAN, tampoco puedo acceder a Internet, el acceso es limitado en las páginas. Adjunto mis desarrollos para que hagan observaciones, comentarios y aportes ya que todas son bien recibidas.
Gracias
INTENTO DE FORMATO DE FECHAS
Using perl Syntax Highlighting
- #!/usr/bin/perl
- use File::stat;
- use Time::localtime;
- $file='test.txt';
- $date_string = ctime(stat($file)->mtime);
- $nueva = ($sec,$min,$hour,$mday,$mon,$year,$wday,
- $yday,$isdst)=localtime($date_string);
- print "$nueva\n";
- #$Archivo = 'prueba.txt';
- #open(Archivo,">>$Archivo");
- #print Archivo "La fecha de modificacion del archivo $file es $date_string\n";
- #print Archivo "El resultado es $resultado";
- #print Archivo "La nueva fecha es $fecha_nueva";
- #close (Archivo);
- INTENTO DE FORMATO DE FECHAS 2
- # declaramos la variable $fecha
- #$fecha;
- #$fecha = `date`;
- #print "$fecha";
- #if($fecha =~ /mar\s+\d/)
- #{
- # print("Estamos en Marzo, el mes de mi cumpleaños\n");
- # }
- #else
- #{
- # print "Todavía queda para mi cumpleaños\n";
- #}
Coloreado en 0.003 segundos, usando GeSHi 1.0.8.4
Using perl Syntax Highlighting
- #!/usr/bin/perl
- #use Date::Calc qw( Decode_Date_US );
- ($sec,$min,$hour,$mday,$mon,$year,$wday,
- $yday,$isdst)=localtime(time);
- $mdayAnt= $mday - 1;
- $hourAnt=18;
- $yearAnt = $year+1900;
- $year = $year+1900;
- $mon = $mon+1;
- $minAnt=00;
- $secAnt=00;
- #$fecha = $yearAnt . "-0" . $mon . "-" . $mdayAnt . " " . $hourAnt . ":0" . $minAnt . ":0" . $secAnt;
- $fechaAnt = $yearAnt . "-" . substr ("0" . $mon,1,2) . "-" . $mdayAnt . " " . $hourAnt . ":0" . $minAnt . ":0" . $secAnt;
- $fecha = $year . "-" . substr ("0" . $mon,1,2) . "-" . $mday . " " . $hour . ":" . $min . ":" . $sec;
- #printf "%4d-%02d-%02d %02d:%02d:%02d\n",
- #$year,$mon,$mday,$hour,$min,$sec;
- printf "$fechaAnt\n";
- printf "$fecha\n";
Coloreado en 0.002 segundos, usando GeSHi 1.0.8.4
PROGRAMA PRINCIPAL ORIENTADO A LECTURA DEL ARCHIVO
Using perl Syntax Highlighting
- use POSIX qw/ strftime /;
- use Getopt::Std;
- # -f: Patron de los archivos a validar.
- # -d: Indica el directorio a buscar archivos.
- # -n: Nombre Archivo Generar.
- # -s: Cadena-patron busqueda
- # -c: Cantidad de lineas a validar
- getopts ("f:d:n:s:c:");
- if ((!defined($opt_f)) || (!defined($opt_d)) || (!defined($opt_n)) || (!defined($opt_s)) || (!defined($opt_c)) ) {
- print "Programa que fechas en los archivos y determina si su fecha es correcta\n\n";
- exit;
- }
- print "--Inicio--\n";
- #---Declaracion variables
- $sArchivos =$opt_f;
- $sDirectorio =$opt_d;
- $sNombreBase =$opt_n;
- $sCadenaBusqueda =$opt_s;
- $iCantidadLineas =$opt_c;
- print "Directorio:$sDirectorio\n";
- $sFecha=strftime( "%d-%m-%Y.%H.%M.%S", localtime(time) );
- $ArchivoResumen=$sNombreBase."+".$sFecha.".txt";
- open(RESUMEN,">>$ArchivoResumen")|| die "Imposible abrir archivo: '$ArchivoResumen': $!";
- print RESUMEN "Archivos\n\n";
- print RESUMEN "=================================================\n";
- print RESUMEN "Los archivos se encuentran localizados en la ruta: $sDirectorio\n";
- print RESUMEN "=================================================\n";
- print RESUMEN "El bat busca la fecha del batch dentro de los archivos y muestra su resultado\n\n";
- print RESUMEN "=================================================\n";
- print RESUMEN "Archivos\n\n";
- #Cierra el archivo
- close(RESUMEN);
- #Separacion de los patrones
- @Patrones=split(/\\/,$sArchivos);
- #Recorrido de los patrones
- foreach $Patron (@Patrones)
- {
- @Archivos=<$opt_d\\$Patron>;
- $Cantidad=$#Archivos + 1;
- print "===========================================================\n";
- print "Patron:$Patron\n";
- print "Cantidad:$Cantidad\n";
- print "@Archivos";
- #Recorre el arreglo de archivos
- foreach $Archivos (@Archivos)
- {
- $iContador=0;
- print "cONT:$iContador\n";
- $sBandera ="FALSE";
- #Separa la ruta
- @NombreEspecifico=split(/\\/,$Archivos);
- #Extrae el nombre donde se registra el resumen archivo resumen
- #aqui va la vara del archivo
- $NombreArchivo=$NombreEspecifico[$#NombreEspecifico];
- print "--------------------------------\n";
- print "Archivo-Ruta:$Archivos\n";
- print "Archivo-Resumen:$ArchivoResumen\n";
- #Abre el archivo a scanear
- open(DETALLE,$Archivos)|| die "Imposible abrir archivo: '$Archivos': $!";
- #Se recorre el archivo
- while (<DETALLE>)
- {
- if ($iContador == iCantidadLineas )
- {
- print "SALIO POR CONTADOR\n";
- break;
- }
- #$iContadorLinea++;
- $Cadena=$_;
- print "Cadena: $Cadena\n";
- #Validacion de la existencia del patron de busqueda
- if ($Cadena =~ /$sCadenaBusqueda/)
- {
- print "SALIO PORQ ENCONTRO\n";
- $sBandera ="TRUE";
- break;
- }
- print "$sBandera\n";
- print "Contador: $iContador\n";
- print "Cantidad: $iCantidadLineas\n";
- $iContador++;
- #-----------------------------------------------------
- }
- #Cierra el archivo a scanear
- close(DETALLE);
- #-----------------------------------------------------
- $Mensaje="";
- if ($sBandera eq "TRUE")
- {
- $Mensaje="La fecha $sCadenaBusqueda SI fue encontrada\n";
- }
- if ($sBandera eq "FALSE")
- {
- $Mensaje="La fecha $sCadenaBusqueda NO fue encontrada\n";
- }
- open(RESUMEN,">>$ArchivoResumen")|| die "Imposible abrir archivo: '$ArchivoResumen': $!";
- print RESUMEN "$NombreArchivo, $Mensaje";
- #Cierra el archivo
- close(RESUMEN);
- #-----------------------------------------------------
- }
- }
- print "--Salida--\n";
Coloreado en 0.003 segundos, usando GeSHi 1.0.8.4