• Publicidad

Búsqueda de fechas y comparación de archivos

¿Apenas comienzas con Perl? En este foro podrás encontrar y hacer preguntas básicas de Perl con respuestas aptas a tu nivel.

Re: Búsqueda de fechas y comparación de archivos

Notapor mvil1984 » 2009-07-21 19:22 @848

Excelente y gracias por todas la aclaraciones y dudas y disculpa que lo moleste tanto. En realidad ha sido el único foro que he entrado donde realmente te ayudan. No sé cómo le haces para estar siempre, pero gracias. Otra cosa, dime cómo hago para realizar la segunda parte que te dije, si los ficheros son parte de los no procesados, cómo hago para ir a buscarlos en diferentes rutas e IP.

Muchas gracias y voy a poner en práctica lo que me has enseñado y voy a seguir buscando las cosas que me harán falta, muchas gracias por sus aclaraciones.

En realidad le agradezco demasiado su ayuda debido a que soy muy nuevo en esto y necesito obtener los resultados esperados.
mvil1984
Perlero nuevo
Perlero nuevo
 
Mensajes: 21
Registrado: 2009-07-17 15:10 @674

Publicidad

Re: Búsqueda de fechas y comparación de archivos

Notapor explorer » 2009-07-21 20:06 @879

No está claro lo que quieres decir con "lo vaya a buscar a diferentes IP y varias rutas."

Si se trata de recoger ficheros que están en otras máquinas, deberías decidirte por habilitar un servicio o protocolo entre las dos máquinas, la que sirve el fichero (lo tiene) y la máquina que lo solicita (el que está ejecutando el programa).

¿FTP, NFS, SCP...?

¿Cómo están conectadas ahora esas máquinas? ¿Con qué protocolos?

Ahora que has resuelto el dónde y el cómo, tienes que resolver el quién, es decir, qué correspondencia vas a usar entre el fichero que quieres traer y dónde tienes que mirar. ¿Es una tabla de correspondencias? ¿O es tan corta que se puede resolver con un diccionario (hash) Perl?
JF^D Perl programming & Raku programming. Grupo en Telegram: https://t.me/Perl_ES
Avatar de Usuario
explorer
Administrador
Administrador
 
Mensajes: 14476
Registrado: 2005-07-24 18:12 @800
Ubicación: Valladolid, España

Re: Búsqueda de fechas y comparación de archivos

Notapor mvil1984 » 2009-07-22 12:27 @560

Mira, el asunto es el siguiente, si el archivo se encuentra no procesado, entonces necesito tomar uno por uno y buscarlo, el primer nivel sería, un nivel más arriba de donde los busca actualmente, luego sería, conectarse tal vez con un net use a un IP y buscar una ruta.
mvil1984
Perlero nuevo
Perlero nuevo
 
Mensajes: 21
Registrado: 2009-07-17 15:10 @674

Re: Búsqueda de fechas y comparación de archivos

Notapor mvil1984 » 2009-07-22 12:34 @565

¿Cómo separar o discriminar para que dentro del directorio sólo me busque los ficheros que sean tipo .xls o algún otro?

Esto se debe separar cada uno de los elementos contenidos en
Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
my $tipofichero = "*.xls";
Coloreado en 0.017 segundos, usando GeSHi 1.0.8.4


Debo separar esto y ponerlo en un arreglo o yo puedo hacer una condición que si
Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
if ($fichero ne $tipofichero)
Coloreado en 0.001 segundos, usando GeSHi 1.0.8.4

que continúe.
mvil1984
Perlero nuevo
Perlero nuevo
 
Mensajes: 21
Registrado: 2009-07-17 15:10 @674

Re: Búsqueda de fechas y comparación de archivos

Notapor kidd » 2009-07-22 12:40 @569

Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
  1.     my $tipofichero = "*.xls";
  2.  
  3.     for my $file( </directorio/$tipofichero> ){
  4.         print $file,"\n";  #mostrará solamente archivos .xls
  5.     }
Coloreado en 0.001 segundos, usando GeSHi 1.0.8.4
Uriel Lizama Perl programmer fundador de Perl en Español
Perl Programming Language
Avatar de Usuario
kidd
Creador de Perl en Español
Creador de Perl en Español
 
Mensajes: 1166
Registrado: 2003-10-15 16:52 @744
Ubicación: México

Re: Búsqueda de fechas y comparación de archivos

Notapor explorer » 2009-07-22 14:00 @625

O también
Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
    next if $fichero !~ /\.xls$/;
Coloreado en 0.001 segundos, usando GeSHi 1.0.8.4

"Salta al siguiente (next) si (if) el nombre del $fichero no tiene (!~) un '.xls' al final ($)".
JF^D Perl programming & Raku programming. Grupo en Telegram: https://t.me/Perl_ES
Avatar de Usuario
explorer
Administrador
Administrador
 
Mensajes: 14476
Registrado: 2005-07-24 18:12 @800
Ubicación: Valladolid, España

Re: Búsqueda de fechas y comparación de archivos

Notapor mvil1984 » 2009-07-22 14:52 @661

Buenas, tengo el código, pero no funciona, algo pasa que no entra a los ciclos, creo que no pasa de la condición donde evalúo si es un txt y si es archivo, también como adiciono la fecha al nombre del archivo para que pueda ejecutarlo y que se creen diferentes archivos según la fecha.

Como ir a buscar en diferentes rutas si el archivo está como no procesado, o sea, que vaya y busque a la ruta \\192.192.192.1\mis_documentos, y si no está ahí que busque en la ruta \\152.152.152.1\informacion y que luego me muestre la ruta en el archivo de salida a la par del fichero que corresponde.

Gracias.

Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
  1. #!/usr/bin/perl -l
  2. use strict;
  3. use warnings;
  4. use diagnostics;
  5. use File::stat;
  6.  
  7.  
  8.  
  9.  
  10. use Time::Local;
  11.  
  12. ## Constantes
  13. my $dir = 'C:/directoriodeprueba';
  14. my $ArchivoResumen="Monitoreo Interfaces.txt";
  15.  
  16.  
  17. ## Variables
  18. my @procesado;
  19. my @no_procesado;
  20. my $mtime="";
  21.  
  22.  
  23. ## Calculo del Tiempo
  24. print "La fecha de hoy es: ",scalar localtime();
  25.  
  26. my @ayer = localtime( time - 86_400 );
  27. my $time = timelocal(0,0,18,@ayer[3..5]);
  28.  
  29.  
  30. print "La fecha de ayer a las 6 es: ",scalar localtime($time);
  31.  
  32.  
  33. ## Analisis de los Ficheros
  34. opendir(DIR, $dir) or die "No se puede abrir el directorio $dir: $!\n";
  35.  
  36.         while (my $fichero = readdir(DIR))
  37.         {
  38.                 print "$fichero\n";
  39.                 #next if ! -f $fichero;                 # Saltamos al siguiente si no es fichero normal
  40.                 next if $fichero !~ /\.PGC$/;           # Saltamos al siguiente si no es .PGC
  41.                 print "$dir/$fichero\n";
  42.                
  43.                 $mtime = (stat("$dir/$fichero"))[9];    # Obtenemos la fecha de modificacion del fichero
  44.                 print "$mtime\n";
  45.                 my $texto = "$fichero".scalar localtime($mtime);
  46.                                
  47.                 if ($mtime > $time)             # Segun el $mtime lo guardamos en un sitio u otro del arreglo
  48.                 {
  49.                        
  50.                         push (@procesado, $texto);      # Insertamos los procesados en el arreglo
  51.                         #print "@procesado";
  52.                 }
  53.                 else
  54.                 {
  55.                        
  56.                         push (@no_procesado, $texto);   # Insertamos los no procesados en el arreglo
  57.                         #print "@no_procesado";
  58.                 }
  59.                
  60.         }
  61. closedir DIR;
  62.                
  63.  
  64. ## Escribimos en el archivo
  65. open(RESUMEN,">>$ArchivoResumen") or die "Imposible abrir archivo: '$ArchivoResumen': $!\n";
  66.  
  67. print RESUMEN "MONITOREO\n";
  68. print RESUMEN '=' x 60;
  69. print RESUMEN "ARCHIVOS PROCESADOS\n";
  70. print RESUMEN '=' x 40;
  71. print RESUMEN join ("\n", @procesado), "\n";
  72. print RESUMEN "ARCHIVOS NO PROCESADOS\n";
  73. print RESUMEN '=' x 40;
  74. print RESUMEN join ("\n", @no_procesado), "\n";
  75.  
  76. close(RESUMEN);
  77.  
  78. ## Fin
Coloreado en 0.002 segundos, usando GeSHi 1.0.8.4
Última edición por kidd el 2009-07-23 11:21 @514, editado 2 veces en total
Razón: Recuerda usar la función para colorear tu código
mvil1984
Perlero nuevo
Perlero nuevo
 
Mensajes: 21
Registrado: 2009-07-17 15:10 @674

Re: Búsqueda de fechas y comparación de archivos

Notapor explorer » 2009-07-22 15:09 @673

Prueba cambiando la línea
Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
next if (! -f $fichero and $fichero !~ /\.PGX$/); # Saltamos al siguiente si no es un fichero normal
Coloreado en 0.001 segundos, usando GeSHi 1.0.8.4

por
Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
next if ! -f $fichero;         # Saltamos al siguiente si no es un fichero normal
next if $fichero !~ /\.PGX$/;  # Saltamos al siguiente si no acaba en .PGX
Coloreado en 0.001 segundos, usando GeSHi 1.0.8.4

Queda más claro y fácil de entender y mantener
JF^D Perl programming & Raku programming. Grupo en Telegram: https://t.me/Perl_ES
Avatar de Usuario
explorer
Administrador
Administrador
 
Mensajes: 14476
Registrado: 2005-07-24 18:12 @800
Ubicación: Valladolid, España

Re: Búsqueda de fechas y comparación de archivos

Notapor explorer » 2009-07-22 15:19 @680

Para la segunda parte, estás indicando que quieres usar el protocolo SMB de Windows, así que tienes unas opciones básicas:

1.) En la mayor parte de los casos, con poner como ruta \\192.192.192.1\mis_documentos es suficiente para acceder a sus contenidos, siempre y cuando no sea necesario un proceso de autenticación. Si eres capaz de acceder a ese directorio remoto sin autenticarte, es muy probable que tu programa Perl pueda hacer lo mismo. Atención a los '\': deberás escaparlos.

2.) Crear unidades de red asociadas a letras de unidad, para que los sistemas remotos aparezcan como unidos a tu actual sistema de ficheros. Así, \\192.192.192.1\mis_documentos lo asocias a la letra M: y solo tendrás que indicar esa ruta al programa.

Seguro que hay más formas... a ver si los usuarios de Windows se animan.
JF^D Perl programming & Raku programming. Grupo en Telegram: https://t.me/Perl_ES
Avatar de Usuario
explorer
Administrador
Administrador
 
Mensajes: 14476
Registrado: 2005-07-24 18:12 @800
Ubicación: Valladolid, España

Re: Búsqueda de fechas y comparación de archivos

Notapor mvil1984 » 2009-07-22 16:37 @734

La siguiente línea no me está leyendo la fecha de modificación, ¿ocurre algún problema con ella?

Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
my $mtime = (stat($fichero))[9];        # Obtenemos la fecha de modificación del fichero
Coloreado en 0.001 segundos, usando GeSHi 1.0.8.4


O esta otra se necesita de algo más, porque si la utilizo no me pega ni me lee la fecha de modificación para el mismo código de antes.

Gracias.

Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
$date_string = (stat($file)->mtime);
Coloreado en 0.001 segundos, usando GeSHi 1.0.8.4
mvil1984
Perlero nuevo
Perlero nuevo
 
Mensajes: 21
Registrado: 2009-07-17 15:10 @674

AnteriorSiguiente

Volver a Básico

¿Quién está conectado?

Usuarios navegando por este Foro: No hay usuarios registrados visitando el Foro y 1 invitado