Ir al contenido principal

Renombrar archivos con busqueda de datos en los mismos

Ayer por la noche estaba recuperando unos archivos del disco duro de mi esposa que se perdieron, en especifico xml's de facturas electrónicas, muchos programas que recuperan información lo hacen sin conseguir el nombre original del documento (lo hice con UFS explorer) y lo guardan como 239847234.extensión como lo muestro en la siguiente imagen:


Los archivos se llamaban segun su número de folio, entonces para renombrarlos por lotes con el número de folio hice el siguiente código, espero en algun momento a alguien le sea útil! :D 

function extraerFolio($nombre)
{
$contenido = file_get_contents("$nombre");
$uno = explode('folio="',$contenido);
$dos = explode('"',$uno[1]);
$folio = $dos[0];
return $folio; #echo $folio . "
";
}
$dir = '2011';
if (is_dir($dir)) 
{
if ($gd = opendir($dir)) 
{
while ($archivo = readdir($gd)) 
{
if ($archivo == "." || $archivo == "..")
{
echo "Do nothing
";
}
else
{
$elnombre = $dir."/".$archivo;
$elfinal = extraerFolio($elnombre);
echo "nombre de archivo: $archivo y folio $elfinal
";
if ($elfinal != NULL)
{
rename("$dir/$archivo","$dir/$elfinal.xml");
echo "
Archivo $dir/$archivo renombrado con éxito al nombre $dir/$elfinal.xml
";
}
}
}
closedir($gd);
}
}
?>


agrego la variable dir por que tenia algo como esto: 

c:\appserv\www\xml

dentro estaba el index que es el código mostrado arriba y también estaban las carpetas 2010, 2011, 2012, por lo que solo cambio la ruta de la carpeta, abro http://127.0.0.1/xml y listo, los archivos se renombran segun su número de folio que se extrae del mismo documento :D 

Esta es la vista final como queda el archivo: 


PD: Blogspot como siempre me desacomoda el código, por lo que lo dejo en pastebin también

Comentarios

Entradas populares de este blog

Solución [fix] a hamachi Logging in .. failed, busy

Hola! Aquí con una pequeña entrada, pero que a más de uno le será útil. Tengo hamachi instalado en varias máquinas, pero en una precisamente al reiniciar, algunas veces me da este problema: usuarioserver@server:~$ sudo hamachi login [sudo] password for usuarioserver: Logging in .. failed, busy Lo busqué en internet y la "solución" que dan, es reinstalar hamachi, y para los que han instalado hamachi en ubuntu, saben que no es una opción, pues se tendrían que hacer estos pasos:  sudo apt-get remove logmein-hamachi sudo dpkg -i logmein-hamachixxx.deb sudo apt-get install -f Para lo cual (siempre) es molesto hacer esos pasos, y algunas veces la configuración se llega a perder.  Para solucionar ese problema, basta con hacer un:  sudo /etc/init.d/logmein-hamachi force-reload Esto forzará el reinicio de hamachi, y así después hacen:  sudo hamachi login Y listo, el problema de failed busy desaparece y los deja loguear bien en la re...

Como un simple cambio de nombre en una fanpage me llevó con un bypass en el sistema linkshim de Facebook

Como un simple cambio de nombre en una fanpage me llevó con un bypass en el sistema linkshim de Facebook  Todo inició con el rediseño de marca de un noticiero digital, en el cuál se cambió el nombre, se cambió el logotipo, se cambiaron los nombres de twitter, el usuario de twitter, el instagram, pero OH! al llegar a facebook y hacer el cambio de url de dominio no hubo problema, pero el querer cambiar el nombre inició la pesadilla... "No podemos cambiar tu nombre de dominio debido a que puede ser engañoso para tus usuarios, etc... etc... etc...". Eso es lo primero que me llegó al intentar cambiar el nombre de dominio, pero para mi suerte, vi un botón de "apelación". ¡Que bien! Puedo apelar y dar mis razones de por qué estoy cambiando el nombre.  Y así empiezo:  " Querido FB, Recientemente la empresa xxxx está en un rediseño de marca e imagen, por lo que agradecería puedan ayudarme con el cambio de nom...

[Anotaciones] Cambiar idioma de windows home single language

1.- Buscar el paquete para la versión de windows windows+R winver 2.- Descargar el paquete 3.- Renombrarlo como LP.cab y pegar en C: 4.- Ejecutar (windows+R) cmd - clic derecho, ejecutar como administrador 5.- dism /online /add-package /packagepath:c:\LP.cab 6.- Esperar varios minutos 7.- Si pide reiniciar, se dice que no 8.- dism /online /get-packages Buscar el que dice en-us 9.- dism /online remove-package /packagename:elnombredelpaqueteidentity 10.- Si pide reiniciar, decimos que no 11.- ejecutamos de nuevo dism /online /get-packages   y verificamos que ya no existe el paquete en-us 12.- reiniciar