RSS

Cambiar extensión a archivos de una carpeta

04 Abr

En algún proyecto pasado tuve la necesidad de cambiar la extensión de todos los archivos de una carpeta. Resulta que me dediqué a investigar funciones de PHP para hacer mi propia función que me automatizara este proceso, y bueno, he aquí mi solución que comparto.

El problema original era que tenía una carpeta con cerca de 2000 archivos de extensión wsdl (sobre servicios web) y tenía que trabajar con ellos pero con extensión xml.

Suponiendo que la ruta relativa es: WSDL/ hará lo siguiente:

  1. Se abrirá la ruta especificada (opendir)
  2. Accederemos a cada archivo en el directorio excepto los especiales, es decir, el directorio actual (.) y padre (..)
  3. En la variable $cadena se obtiene la ruta y nombre de cada archivo: WSDL/archivo.wsdl
  4. La ruta anterior se dividirá en dos partes a partir del punto con la función explode de PHP. Resultado: $partirCadena[0] = WSL/archivo $partirCadena[1] = wsdl
  5. Usaremos la función rename de PHP con los parámetros de $cadena y $partirCadena[0] concatenado con la extensión deseada.

Y aquí el código de la función que cambia la extensión:

function cambiarExtension($ruta)
{
   //abrir "WSDL/" con manejador
   $manejador = opendir($ruta);
   //Obtener todos los archivos dentro de la carpeta
   while(false !== ($archivo = readdir($manejador)))
   {
      //No tomar en cuenta .  y  ..
      if($archivo != "." && $archivo != "..")
      {
         //"WSDL/archivo.wsdl"
         $cadena = $ruta.$archivo;

         //Obtendremos "WSDL/archivo"
         $partirCadena = explode(".", $cadena);

         //Anterior WSDL/archivo.wsdl ($cadena)
         //Actual WSDL/archivo.xml
         rename($cadena, $partirCadena[0].".xml");
       }
    }
  closedir($manejador);
}

Acá el código para desplegar en pantalla:

function listarArchivos($ruta)
{
    echo '<h2>Abriendo carpeta: '.$ruta.'</h2>';
    $manejador = opendir($ruta);
    while(false !== ($file = readdir($manejador)))
    {
       if($file != "." && $file != "..")
       echo $file."<br/>";
    {
 closedir($manejador);
}

Y el código de llamada:

<?php
<span style="line-height: 1.4;">echo '<h3>Antes de cambiar extension</h3>';</span>
listarArchivos("WSDLS/");

cambiarExtension("WSDLS/");

echo '<h3>Despues de cambiar extension</h3><br />';
listarArchivos("WSDLS/");
?>

Antes de cambiar extensión

Después de cambiar extensión

Después de cambiar extensión

Cabe mencionar que también lo probé usando una carpeta con imágenes gif y las cambié a jpg y funcionó correctamente.

😀 Así lo hice 😀

@huguidugui || ringhugos@gmail.com

Tal vez te pueda interesar GENERAR UN PDF DESDE PHP (se abrirá en otra pestaña la explicación del miniproyecto)

 
Deja un comentario

Publicado por en 4 abril, 2013 en PHP

 

Deja un comentario

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s

 
A %d blogueros les gusta esto: