[PHP] Cambiar nombre de zips de acuerdo al contenido

      • 225
      • mensajes
      • miembro desde
      • 20/09/02
    08/02/2005
    #1 Se busca programador para trabajo sencillo URGENTE

    Hola !!!

    Bueno, buscamos a alguien que pueda resolver este problema..

    Tengo miles de archivos ZIP numerados del 0 al 17.000..

    Dentro de cada archivo, se encuentra uno o dos archivos (a veces más pero no mas de 5).. En el caso de varios archivos, todos tienen nombres similares, solo cambian las ultimas letras.

    Necesito un programa (no importa su lenguaje siempre y cuando funcione en Windows o con PHP mySQL) que le asigne a los ZIP numerados, el nombre del archivo que contiene DENTRO del zip..

    Por ejemplo.. Un zip se llama 3465.zip y tiene un archivo llamado "Maldita Noche.mp3"

    Yo necesito que convierta ese ZIP en "Maldita Noche.zip"

    Esperamos sus respuestas !

  1. ¿Este tema te pareció interesante? Compártelo!

    ¿No es lo que buscabas? Intenta buscar un tema similar

    6 comentarios / 2659 Visitas

    • PoetaCamba
      Invitado
    08/02/2005
    #2 Re: Se busca programador para trabajo sencillo URGENTE

    no entiendo una cosa...

    si el .zip tiene mas de un archivo dentro q nombre tomaria?

      • 31
      • mensajes
      • miembro desde
      • 07/11/02
    08/02/2005
    #3 Re: Se busca programador para trabajo sencillo URGENTE

    Bueno, aquí hay un script que hace lo que necesitas. Utiliza la extension zip que bien con PHP, si no la tenes se puede descargar de http://snaps.php.net/win32/PECL_STABLE/php_zip.dll y debes copiarla al directorio extensions donde tienes instalado PHP.

    Copia el script a un archivo php y reemplaza las constantes ZIP_DIR y ZIP_DIR_NUEVO por los directorios donde estan los zips y donde quieres que se renombren respectivamente.

    El script va leyendo los archivos zips originales, luego lee el primer archivo dentro del zip, le saca la extension y utiliza el nombre para renombrar el archivo zip.

    Dado que no das muchos datos sobre los archivos dentro del zip, asumi ciertas cosas (como que los archivos tiene extension).

    Código PHP:
           define('ZIP_DIR','zips/');
          
    define('ZIP_DIR_NUEVO','zipsNuevos/');
      
          if(!
    dl('php_zip.dll')) die('Necesita la extension ZIP');
          
    $zipDir dir(ZIP_DIR);
          while(
    false !==($zipArchivo $zipDir->read()))
          {
              
    $zipDirArchivo ZIP_DIR.$zipArchivo;
              if(
    '.zip'==substr($zipArchivo, -4) && is_file($zipDirArchivo))
              {
                  
    $zip zip_open($zipDirArchivo);
                  if(
    $zip)
                  {
                  
    $zipEntradaNombre basename(zip_entry_name(zip_read($zip)));
                     
    $zipEntradaExt strrpos($zipEntradaNombre'.');
                  
    $zipNuevoNombre substr($zipEntradaNombre0, ($zipEntradaExt?$zipEntradaExt:strlen($zipEntradaNombre)));
                  
    $zipNuevoNombre ucwords(str_replace('.'' '$zipNuevoNombre));
                  
    $zipNuevoNombreDir ZIP_DIR_NUEVO.$zipNuevoNombre.'.zip';
                      
    zip_close($zip);
      
                     if(
    file_exists($zipNuevoNombreDir))
                      {
                          
    $i=0;
                   while(
    file_exists($zipNuevoNombreDir ZIP_DIR_NUEVO.$zipNuevoNombre.'_'.$i.'.zip')) $i++;
                      }
      
                  echo (
    rename($zipDirArchivo$zipNuevoNombreDir) ? 'Renombrado':'Error al renombrar').": $zipDirArchivo => $zipNuevoNombreDir\r\n";
                  }
              }
          }
          
    $zipDir->close();
      
    ?>
    Edicion 1: Ahora reemplaza los puntos por espacios y transforma en mayuscula la primera letra de cada palabra. Lo de procesar números no correlativos ya lo hacia de antes porque lee los archivos zip existentes en el directorio especificado.

    Saludos
      • 225
      • mensajes
      • miembro desde
      • 20/09/02
    09/02/2005
    #4 Re: Se busca programador para trabajo sencillo URGENTE

    Ktion:

    Gracias por tu ayuda...

    Te cuento, tengo un cd con efectos de sonido comprimidos en zip... las extensiones varian entre mp3, wma, y algunas mas, pasa que algunos zip tienen por ejemplo..
    Efecto 1.mp3
    Efecto 2.mp3

    y asi... pero casi siempre el mismo nombre..

    Por ultimo faltaria resolver el siguiente tema que creo que con la funcion de reemplazo de php se puede hacer.. que es Sacarle los puntos al nombre del archivo dentro del zip... Paso a dar el ejemplo de porque hay que hacer esto..

    La gran mayoria No se llama simplemente "Super Efecto Lluvia.mp3", sinó que por algúna razón se llaman "super.efecto.lluvia.mp3"

    Por ultimo, hay algunos numeros que no están, por lo que el script tendria que saltarlos...

    Se podrían resolver estos dos últimos temas ??.


    Mil gracias a todos por las respuestas y la colaboracion !

      • 225
      • mensajes
      • miembro desde
      • 20/09/02
    09/02/2005
    #5 Re: Se busca programador para trabajo sencillo URGENTE

    Lo acabo de probar y funciona perfecto... !!!

    Lo que quedaría por resolver es el tema de que algunos zip tienen dentro de si, archivos con puntos en vez de espacios (una funcion de reemplazo).. Como el ejemplo que puse arriba..

    Mil Gracias por tu ayuda !!!!

      • 94
      • mensajes
      • miembro desde
      • 31/05/04
    09/02/2005
    #6 Re: Se busca programador para trabajo sencillo URGENTE

    y mira para el primer tema que decis, lo que se puede hacer es una vez que le sacas la extension al nombre del archivo que esta dentro del zip, agarrar esa sub-cadena y la volves a procesar, para que reemplaze todos los '. ' que encuentre por espacios en blanco


    para hacer eso fijate si la funcion eregi_replace() te sirve, supuestamente busca una subcadena dentro de otra y cuando encuentra coincidencias , la reemplaza por lo que vos definas, pero la verdad no se si en la primera coincidencia para, o sigue hasta finalizar la cadena, nunca programe en php

    eregi_replace("."," ", $cadena);

      • 225
      • mensajes
      • miembro desde
      • 20/09/02
    10/02/2005
    #7 Re: Se busca programador para trabajo sencillo URGENTE

    Gracias a todos por su ayuda !!!..
    Finalmente con el código provisto pude hacerlo..

    Mil gracias !!

    Saludos !!!