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
";
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