Foros del Web » Programando para Internet » PHP »

consulta rename de varios archivos

Estas en el tema de consulta rename de varios archivos en el foro de PHP en Foros del Web. hola mi cuestión es esta tengo unas imágenes cargadas en una carpeta y quiero renombrarlas consecutivamente mi codigo la ruta ($dir) se obtiene de un ...
  #1 (permalink)  
Antiguo 17/07/2009, 12:26
Avatar de ale80262  
Fecha de Ingreso: junio-2008
Mensajes: 66
Antigüedad: 15 años, 10 meses
Puntos: 0
consulta rename de varios archivos

hola mi cuestión es esta tengo unas imágenes cargadas en una carpeta y quiero renombrarlas consecutivamente mi codigo

la ruta ($dir) se obtiene de un get pero quedaría así
por ejemplo

Código PHP:
$dir "imagenes/servicios/160/"
$n 0;
if (
is_dir($dir)) {
    if (
$gd opendir($dir)) {
        while ((
$archivo readdir($gd)) !== false) {
        
$n++;
        list (
$nombre,$ext) = explode(".",$archivo);
  }
        if (!
rename($dir$archivo $dir,$n.$ext)){ echo "no";}else{ echo "si";}
        
closedir($gd);
    }
 

no funciona, mas grafico por si no explique bien


carpeta con imágenes imagen.jpg otr.jpg
y quiero que quede 1.jpg y 2.jpg

si alguien puede tirarme una mano.... muchas gracias como siempre
  #2 (permalink)  
Antiguo 17/07/2009, 12:34
Avatar de maycolalvarez
Colaborador
 
Fecha de Ingreso: julio-2008
Ubicación: Caracas
Mensajes: 12.120
Antigüedad: 15 años, 9 meses
Puntos: 1532
Respuesta: consulta rename de varios archivos

primero debes cargar los nombres de todos los archivos en un array y luego renombrarlos, porque estás usando readdir y el funciona con un apuntador interno, cada vez que cambias el nombre del archivo, el mismo se re-posiciona (alfabéticamente creo) y cambias el orden conque readdir comenzó, puedes generar un caos, el ciclo incluso pudiera no llegar a salir.
  #3 (permalink)  
Antiguo 17/07/2009, 12:57
Avatar de ale80262  
Fecha de Ingreso: junio-2008
Mensajes: 66
Antigüedad: 15 años, 10 meses
Puntos: 0
Respuesta: consulta rename de varios archivos

sigo sin poder he intentado algo como

Código PHP:
$imagenes = array();

if (
is_dir($dir)) {
    if (
$gd opendir($dir)) {
        while ((
$archivo readdir($gd)) !== false) {
        
//aca algo como 
       
$imagenes[] = $archivo


}
        
//esto no asi    
        
if (!rename($dir $archivo $dir $n.".".$ext)){ echo "no";}else{ echo "si";}
        
closedir($gd);
    }
 

  #4 (permalink)  
Antiguo 17/07/2009, 13:08
Avatar de maycolalvarez
Colaborador
 
Fecha de Ingreso: julio-2008
Ubicación: Caracas
Mensajes: 12.120
Antigüedad: 15 años, 9 meses
Puntos: 1532
Respuesta: consulta rename de varios archivos

Código PHP:
$imagenes = array();

if (
is_dir($dir)) {
    if (
$gd opendir($dir)) {
        while ((
$archivo readdir($gd)) !== false) {
            
//aca algo como 
            
$imagenes[] = $archivo;
        }
    }
 
closedir($gd);
    
$n=0;
    
//2do ciclo
    
foreach($imagenes as $imagen){
        
$n++;
        list (
$nombre,$ext) = explode(".",$imagen); 
        
//esto no asi    
        
if (!rename($dir $imagen$dir "im".$n.".".$ext)){ echo "no";}else{ echo "si";}
       
    }
 

  #5 (permalink)  
Antiguo 17/07/2009, 13:46
Avatar de ale80262  
Fecha de Ingreso: junio-2008
Mensajes: 66
Antigüedad: 15 años, 10 meses
Puntos: 0
Respuesta: consulta rename de varios archivos

Sigo sin poder despues del seundo ciclo muestro el array como quedaria y me queda el asi

. => .

.. => ..

DSC00353.JPG => DSC00353.JPG

DSC00659.JPG => DSC00659.JPG

DSC00660.JPG => DSC00660.JPG

DSC00661.JPG => DSC00661.JPG

m => m

mi codigo

Código PHP:

$imagenes 
= array();
if (
is_dir($dir)) {
    if (
$gd opendir($dir)) {
        while ((
$archivo readdir($gd)) !== false) {
            
$imagenes[] = $archivo;
        }
    }
    
    
$n=0;
    
//2do ciclo
    
foreach($imagenes as $imagen => $valor){
        
         echo 
"<br>";
         echo  
"$imagenes[$imagen] => $valor";
         echo 
"<br>";
        }
      
      
        
//if (!rename($dir . $nombre , $dir . $n.".".$ext)){ echo "<br>no";}else{ echo "<br>si";}
        
closedir($gd);
    } 

gracias por la mano
  #6 (permalink)  
Antiguo 17/07/2009, 14:00
Avatar de maycolalvarez
Colaborador
 
Fecha de Ingreso: julio-2008
Ubicación: Caracas
Mensajes: 12.120
Antigüedad: 15 años, 9 meses
Puntos: 1532
Respuesta: consulta rename de varios archivos

Debería funcionar, si no, es porque el directorio no tiene permisos de escritura.

Revisa bien la salida y por favor muestra los mensajes de error también para poder orientarte.
  #7 (permalink)  
Antiguo 17/07/2009, 14:26
Avatar de ale80262  
Fecha de Ingreso: junio-2008
Mensajes: 66
Antigüedad: 15 años, 10 meses
Puntos: 0
Respuesta: consulta rename de varios archivos

mi codigo es este
Código PHP:
<?
ini_set 
('error_reporting'E_ALL);
$ruta $_GET["ruta"];
$ruta .= "/";




$dir $ruta;

//renombrar


if (is_dir($dir)) {
    if (
$gd opendir($dir)) {
        while ((
$archivo readdir($gd)) !== false) {
            
$imagenes[] = $archivo;
        }
    }
    
    
$n=0;
    
//2do ciclo
    
foreach($imagenes as $imagen => $valor){
        
         echo 
"<br>";
         echo  
"$imagenes[$imagen] => $valor";
         echo 
"<br>";
        }
      
      
        if (!
rename($dir $archivo $dir $n)){ echo "<br>no";}else{ echo "<br>si";}
        
closedir($gd);
    }
 

?>

la salida


. => .

.. => ..

DSC00353.JPG => DSC00353.JPG

DSC00659.JPG => DSC00659.JPG

DSC00660.JPG => DSC00660.JPG

DSC00661.JPG => DSC00661.JPG

m => m

no

y no me devuelve error
  #8 (permalink)  
Antiguo 17/07/2009, 14:48
Avatar de maycolalvarez
Colaborador
 
Fecha de Ingreso: julio-2008
Ubicación: Caracas
Mensajes: 12.120
Antigüedad: 15 años, 9 meses
Puntos: 1532
Respuesta: consulta rename de varios archivos

No, esa es tu entrada, me refiero a tu salida (el nombre y ruta que quieres colocarle a los archivos), hasle echo a los parámetros que le pasas a rename (comenta "//" la línea del rename), si la ruta de salida no es válida por eso no te funciona, revisa también los permisos de escritura del directorio.

veo que estas tratando de renombrar mal los archivos.

Te lo reitero y disculpa que sea necio, "revisa tus salidas".
  #9 (permalink)  
Antiguo 17/07/2009, 15:11
Avatar de ale80262  
Fecha de Ingreso: junio-2008
Mensajes: 66
Antigüedad: 15 años, 10 meses
Puntos: 0
Respuesta: consulta rename de varios archivos

corregi algunas cosas y ahora funciona me renombra las imgenes pero me duplica la ultima

mi codigo como esta ahora

Código PHP:
//renombrar


if (is_dir($dir)) {
    if (
$gd opendir($dir)) {
        while ((
$archivo readdir($gd)) !== false) {
            
$imagenes[] = $archivo;
        }
    }
    
    
$n=0;
   
    foreach(
$imagenes as $imagen => $valor){
        
$n++;
         echo 
"<br>";
         echo  
"$imagenes[$imagen] => $valor";
         echo 
"<br>";
         list(
$n_i$ext) = explode(".",$valor);
         if (!
rename($dir $valor $dir $n"." .$ext)){ echo "<br>no";}else{ echo "<br>si";}
        
closedir($gd);
        }
      

gracias de nuevo
  #10 (permalink)  
Antiguo 17/07/2009, 15:16
Avatar de ale80262  
Fecha de Ingreso: junio-2008
Mensajes: 66
Antigüedad: 15 años, 10 meses
Puntos: 0
Respuesta: consulta rename de varios archivos

ahi por el moemnto funciona bien muchas gracias me has dado una gran mano
  #11 (permalink)  
Antiguo 17/07/2009, 15:17
Avatar de maycolalvarez
Colaborador
 
Fecha de Ingreso: julio-2008
Ubicación: Caracas
Mensajes: 12.120
Antigüedad: 15 años, 9 meses
Puntos: 1532
Respuesta: consulta rename de varios archivos

Que extraño que te duplique la última, bueno pero la linea "closedir($gd)" va después de finalizar el primer ciclo.

De repente en tus anteriores intentos se duplico al menos 1 imagen, vuelve a intentarlo con las imágenes originales a ver que pasa, te deseo suerte, si acaso no te resulta vuelvo mañana.
  #12 (permalink)  
Antiguo 17/07/2009, 15:18
Avatar de maycolalvarez
Colaborador
 
Fecha de Ingreso: julio-2008
Ubicación: Caracas
Mensajes: 12.120
Antigüedad: 15 años, 9 meses
Puntos: 1532
Respuesta: consulta rename de varios archivos

Cita:
Iniciado por ale80262 Ver Mensaje
ahi por el moemnto funciona bien muchas gracias me has dado una gran mano
Perfecto! me alegra que te haya funcionado.
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 02:07.