Mie Dic 21, 2005 12:10 pm
|
 |
glucas
Perlero Nuevo

|
Registrado: 02 Dic 2004
Mensajes: 22
Ubicación: España
|
|
| Usar la función rename |
|
|
Intento utilizar la funcion rename con el siguiente codigo.
my $dir_consulta = "E:/camb_ext/";
my $fichero = '';
my $resultado = '';
if(opendir(DIRECTORIO,$dir_consulta))
{
#Leemos el listado de fichero que lo componen
foreach (readdir DIRECTORIO)
{
$fichero = $_;
#Seleccionamos los fichero que tengan un nombre con el formato *.*,
#donde * representa cualquier cadena alfanumérica
if ($fichero =~ /\w\.\w/)
{
my $aux = substr($fichero,0,(length($fichero)-4));
my $nuevo_nombre = $aux."_p.jpg";
$resultado = rename($fichero,$nuevo_nombre);
}
}
print "FIN";
}
else
{
print "no se abre ".$dir_consulta;
}
pero no consigo mi objetivo. me imagino que pudiera ser un problema de permisos, pero no se resolverlo (la carperta es de solo lectura y no le puedo cambiar el atributo, he intentado compartirla dando permisos a Todos pero tampoco soluciono). ¿se os ocurre algo? |
|
|
|

Mie Dic 21, 2005 5:08 pm
|
 |
kidd
Creador de Perl en Español

|
Registrado: 15 Oct 2003
Mensajes: 1389
Ubicación: México
|
|
|
|
|
Me parece que tu problema es que no estás poniendo la ruta completa del archivo que quieres renombrar, revisa que tengas correcta la ruta.
Para checarlo puedes intentar:
| Código: |
unless(-e $fichero){
print "El archivo $fichero no parece existir.";
}
|
SALUDOS |
|
Jue Dic 22, 2005 3:20 am
|
 |
glucas
Perlero Nuevo

|
Registrado: 02 Dic 2004
Mensajes: 22
Ubicación: España
|
|
|
|
|
He añadido el codigo que me indicas, y obtengo el siguiente mensaje: estos dos archivo son los que quiero cambiar de nombre precisamente...
El archivo 2125.jpg no parece existir.
El archivo 2125_0.jpg no parece existir
supongo que al abrir el directorio con OPENDIR ya me situa en el mismo y lee desde aqui.
tengo dos particiones en el disco duro y he probado a crear la carpeta en ambas y me da lo mismo. No se me ocurre otra cosa. |
|

Jue Dic 22, 2005 4:45 am
|
 |
explorer
Moderador

|
Registrado: 24 Jul 2005
Mensajes: 4082
Ubicación: Valladolid, España
|
|
|
|
|
| glucas escribió: | He añadido el codigo que me indicas, y obtengo el siguiente mensaje: estos dos archivo son los que quiero cambiar de nombre precisamente...
El archivo 2125.jpg no parece existir.
El archivo 2125_0.jpg no parece existir
supongo que al abrir el directorio con OPENDIR ya me situa en el mismo y lee desde aqui.
tengo dos particiones en el disco duro y he probado a crear la carpeta en ambas y me da lo mismo. No se me ocurre otra cosa. | Pues no... opendir NO te sitúa en el mismo directorio en donde se encuentran los ficheros. Simplemente te devuelve la lista de directorios y ficheros que hay dentro del directorio que acabas de abrir.
Tienes dos opciones:
1.- O te colocas dentro del directorio donde quieres trabajar, con la función chdir, o
2.- Agregas el directorio en todas las operaciones de ficheros. Por ejemplo:
| Código: |
#!/usr/bin/perl -w
my $dir_consulta = "E:/camb_ext/";
my $fichero = '';
my $resultado = '';
if(opendir(DIRECTORIO,$dir_consulta))
{
#Leemos el listado de fichero que lo componen
foreach (readdir DIRECTORIO)
{
$fichero = $_;
#Seleccionamos los fichero que tengan un nombre con el formato *.*,
#donde * representa cualquier cadena alfanumérica
if ($fichero =~ /\w+\.\w+/)
{
my $nuevo_nombre = substr($fichero,0,-4) . "_p.jpg";
$resultado = rename("$dir_consulta/$fichero","$dir_consulta/$nuevo_nombre");
print "Renombrando $fichero a $nuevo_nombre: $resultado : $!\n";
}
}
print "FIN\n";
}
else
{
print "no se abre ".$dir_consulta;
}
closedir DIRECTORIO; |
|
|

Jue Dic 22, 2005 6:49 am
|
 |
glucas
Perlero Nuevo

|
Registrado: 02 Dic 2004
Mensajes: 22
Ubicación: España
|
|
|
|
|
| Efectivamente, mi error estaba en confiar que open dir me situaba en el fichero. muchas gracias. |
|
Powered by phpBB © 2001, 2005 phpBB Group
|