Foros del Web » Programando para Internet » PHP »

Renombrado consecutivo

Estas en el tema de Renombrado consecutivo en el foro de PHP en Foros del Web. Hola a todos... Tengo en una carpeta una cantidad de archivos .gif de 400 bytes cada uno. Dichos archivos tienen como nombre "números" salteados... por ...
  #1 (permalink)  
Antiguo 18/10/2003, 09:41
Avatar de drcyber  
Fecha de Ingreso: julio-2002
Mensajes: 826
Antigüedad: 15 años, 4 meses
Puntos: 2
Pregunta Renombrado consecutivo

Hola a todos...

Tengo en una carpeta una cantidad de archivos .gif de 400 bytes cada uno. Dichos archivos tienen como nombre "números" salteados... por ejemplo:

23.gif, 12.gif, 45.gif etc...

¿Cómo puedo renombrar todos los archivos de esa carpeta de forma consecutiva?... para que queden...

1.gif, 2.gif, 3.gif, etc...

Se que con rename se puede... pero quizás sea necesario algo de expresiones regulares para poder renombrarlos asi.

¿Ideas?...

Thankz !
__________________
Dr. Cyber
Ingeniarte.com
(soy el mismo Takitei)
  #2 (permalink)  
Antiguo 18/10/2003, 12:15
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 15 años, 11 meses
Puntos: 126
Lee tu directorio como ya lo estarás haciendo para obtener el nombre del archivo .. y .. usa un contador en tu bucle que usas para leer esos archivo. Copia los archivos "renombrados" hacia otro directorio para evitar problemas y borra el archivo original tras el copiado a otro directorio con el nombre que le das secuancialmente ..

Te lo detallo en psudo-código:

Código PHP:
// inicias el contador ...
$contador=1;
bucle (....){
// Lógica para obtener el nombre del archivo ...
// renombras el archivo.
copy($nombre_archivo_original,"otrositio/".$contador.".php")
// borras el archivo original ..
unlik($nombre_archivo_original);
// Lo incrementas una unidad.
$contador++;


Un saludo,
__________________
Por motivos personales ya no puedo estar con Uds. Fue grato haber compartido todos estos años. Igualmente los seguiré leyendo.
  #3 (permalink)  
Antiguo 18/10/2003, 12:32
 
Fecha de Ingreso: abril-2003
Mensajes: 656
Antigüedad: 14 años, 7 meses
Puntos: 1
Creo que tambien se podria hacer , renombrando los archivos, como dice cluster primero leer el directorio y guardarlo en un array , y luego con un foreach volverlo a pasar y renombrar los archivos teniendo en cuenta la extension.

aqui te dejo un ejempo:

Código PHP:
<?PHP

function navdir($dir)
{
     
$resultado=array();
     
$handle=opendir($dir);
      while (
$file readdir($handle)) {
          if(
is_dir($file) or $file=="." or $file=="..")$file="";
            else   
$resultado[]=$file
       }
       
closedir($handle);
       return 
$resultado;
}
$dir="ruta_completo_al_directorio";
$files=navdir($dir);
$si=0;
$no=0;


foreach ( 
$files as $clave=>$valor){  
    
$ext=pathinfo($valor);
      if(
rename ($dir."/".$valor,$dir."/".$clave.".".$ext["extension"])) $si++;
          else 
$no++;   
}

echo 
"<li> Se han renombrado ".$si." archivos  de un total de: ".count($files);
echo 
"<li> Ha fallado el renombrar ".$no." archivos  de un total de: ".count($files);

?>
aunque una sugernecia, antes de manipular archivos es mejor hacer una copia de seguridad del directorio por si las moscas.


espero que te sirva

un saludo
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 03:55.