Foros del Web » Programando para Internet » PHP »

Copiar/Mover/Renombrar ficheros XML

Estas en el tema de Copiar/Mover/Renombrar ficheros XML en el foro de PHP en Foros del Web. Hola tengo un problema para renombrar/mover/copiar ficheros XML con el valor de una etiqueta del XML y voy a enloquecer... Esto es el co Código ...
  #1 (permalink)  
Antiguo 17/10/2012, 11:55
 
Fecha de Ingreso: octubre-2011
Mensajes: 206
Antigüedad: 12 años, 6 meses
Puntos: 1
Copiar/Mover/Renombrar ficheros XML

Hola

tengo un problema para renombrar/mover/copiar ficheros XML con el valor de una etiqueta del XML y voy a enloquecer...

Esto es el co
Código PHP:
$files_xml[] = simplexml_load_file($dir."\\".$file);

foreach (
$files_xml as $xml) {
$Cabecera $xml->Cabecera;}
echo 
'$Cabecera->Codigo'
Obtengo 10 codigos de 10 ficheros que tengo en la carpeta $dir."\\".$file. No hay mas ficheros. Esto esta correcto.

El problema es que al primer fichero almacenado en la carpeta lo quiero renombrar,copiar,mover a otra carpeta (me da igual esto...) con el nombre del primer codigo, al segundo con el segundo y asi sucesivamente hasta los 10.

Si hago lo siguiente:
Código PHP:
copy($file,"C/Carpeta1/'$Cabecera->Codigo'".xml 
Me indica este error: Filename cannot be empty in $dir."\\".$file
Alguien sabe como resolverlo por favor.....
  #2 (permalink)  
Antiguo 17/10/2012, 12:13
Avatar de Marvin
Colaborador
 
Fecha de Ingreso: febrero-2005
Ubicación: global $Chile->Santiago;
Mensajes: 1.991
Antigüedad: 19 años, 2 meses
Puntos: 81
Respuesta: Copiar/Mover/Renombrar ficheros XML

No deberias escapar el php asi:
Código PHP:
Ver original
  1. copy($file,"C://Carpeta1//".$Cabecera->Codigo.".xml");
Ahora tampoco se si en windows necesitas \\ o //

Saludos!
__________________
El que dice "Solo sé que nada sé", esta asumiendo que sabe algo.
Lea las FAQ's!
  #3 (permalink)  
Antiguo 17/10/2012, 12:25
 
Fecha de Ingreso: octubre-2011
Mensajes: 206
Antigüedad: 12 años, 6 meses
Puntos: 1
Respuesta: Copiar/Mover/Renombrar ficheros XML

Si lo marco mo indicas me da este error

Parse error: syntax error, unexpected '"'

Creo que el problema no esta en esa parte del copy. El problema es que no me encuentra el $file.

Donde se debe marcar esto? \\ o //

Gracias.

Edito: estaban mal las comillas, sigue apareciendo el error: Filename cannot be empty
  #4 (permalink)  
Antiguo 18/10/2012, 14:16
 
Fecha de Ingreso: octubre-2011
Mensajes: 206
Antigüedad: 12 años, 6 meses
Puntos: 1
Respuesta: Copiar/Mover/Renombrar ficheros XML

Por favor hay alguien que sabe como puedo hacer esto, ir leyendo los ficheros uno a uno con el foreach que me va leyendo los xml.

Una vez cambiado el nombre podia incluso eliminar el fichero. Ya no se como hacerlo, siempre me indica que el fichero esta vacío o que no existe nombre.

He probado poner esto:

Código PHP:
foreach ($files_xml as $xml) {
$Cabecera$xml->Cabecera;

$dir='C:\Users\Desktop\Temporal';
$handle opendir($dir);
$file2=readdir($handle)
copy($file2,"C:\Users\Desktop\Factura\'$Cabecera->Codigo.xml");
    
unlink($file2); 
Pero me indica $file2 is empty, y tengo todos los XML enla carpeta Temporal, no lo tentiendo.
  #5 (permalink)  
Antiguo 18/10/2012, 15:57
Avatar de Triby
Mod on free time
 
Fecha de Ingreso: agosto-2008
Ubicación: $MX->Gto['León'];
Mensajes: 10.106
Antigüedad: 15 años, 8 meses
Puntos: 2237
Respuesta: Copiar/Mover/Renombrar ficheros XML

Si haces un echo $file2; verás que solo te muestra el nombre del archivo, pero no toda la ruta, por lo que tienes que hacer algo como:

copy('ruta/' . $file2, "ruta/{$Cabecera->Codigo}.xml");

Por cierto, encierra $Cabecera->Codigo entre llaves para garantizar que la cadena será interpretada correctamente.

Luego, readdir podría devolverte . (un punto = directorio actual) o .. (dos puntos = directorio en nivel superior) y, la verdad, no veo el sentido de usar opendir() y readdir() en cada iteración del foreach(), porque siempre devolverá el mismo nombre de archivo.

Tu lógica debería ser más o menos así:

Código PHP:
Ver original
  1. // Abres el directorio
  2. $handle = opendir($dir);
  3. // Recorres cada archivo
  4. while($archivo = readdir($handle)) {
  5.     // Aquí verificas que sea realmente un XML y...
  6.     // ... si es el caso, entonces copias o renombras
  7. }
  8. closedir($handle);
__________________
- León, Guanajuato
- GV-Foto
  #6 (permalink)  
Antiguo 19/10/2012, 05:53
 
Fecha de Ingreso: octubre-2011
Mensajes: 206
Antigüedad: 12 años, 6 meses
Puntos: 1
Respuesta: Copiar/Mover/Renombrar ficheros XML

echo $file2 solo me muestra .

Aparecen tantos puntos como ficheros hay en la carpeta.
  #7 (permalink)  
Antiguo 19/10/2012, 14:04
Avatar de Marvin
Colaborador
 
Fecha de Ingreso: febrero-2005
Ubicación: global $Chile->Santiago;
Mensajes: 1.991
Antigüedad: 19 años, 2 meses
Puntos: 81
Respuesta: Copiar/Mover/Renombrar ficheros XML

Entonces no estas sacando el nombre del archivo correctamente.

Deberias revisarlo con dir() o alguna funcion de ese estilo.

Saludos!
__________________
El que dice "Solo sé que nada sé", esta asumiendo que sabe algo.
Lea las FAQ's!
  #8 (permalink)  
Antiguo 19/10/2012, 16:46
Avatar de Triby
Mod on free time
 
Fecha de Ingreso: agosto-2008
Ubicación: $MX->Gto['León'];
Mensajes: 10.106
Antigüedad: 15 años, 8 meses
Puntos: 2237
Respuesta: Copiar/Mover/Renombrar ficheros XML

Oh my dog!

Desearía que algunos usuarios adquieran el hábito de la lectura y no se queden solo con lo que aparece en la primera línea.
__________________
- León, Guanajuato
- GV-Foto

Etiquetas: ficheros, xml
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 13:50.