Foros del Web » Programando para Internet » PHP »

como cambiar todos los espacios de todos los nombres de archivos de una carpeta...lee

Estas en el tema de como cambiar todos los espacios de todos los nombres de archivos de una carpeta...lee en el foro de PHP en Foros del Web. hola esta vez la duda es la siguiente: con PHP, se pueden cambiar todos los espacios que haya en los nombres de archivo de un ...
  #1 (permalink)  
Antiguo 15/06/2004, 11:56
Avatar de yeta  
Fecha de Ingreso: enero-2004
Mensajes: 148
Antigüedad: 20 años, 3 meses
Puntos: 0
como cambiar todos los espacios de todos los nombres de archivos de una carpeta...lee

hola
esta vez la duda es la siguiente:
con PHP, se pueden cambiar todos los espacios que haya en los nombres de archivo de un directorio por otro carácter, como por ejemplo _ ???
se entiende la pregunta?
bueno y si no pongo un ejemplo:
tengo
mi foto 1.jpg
mi foto 2.jpg
mi foto 3.jpg
pues yo quiero
mi_foto_1.jpg
mi_foto_2.jpg
mi_foto_3.jpg

o que se suprima el espacio, lo que se mas facil
gracias
  #2 (permalink)  
Antiguo 15/06/2004, 12:27
Avatar de xcorpion  
Fecha de Ingreso: octubre-2003
Ubicación: m é x i c o
Mensajes: 676
Antigüedad: 20 años, 6 meses
Puntos: 4
eso puede depender del sistema en el que estes trabajando aun que es muy simple, puedes leer el nombre de cada uno de los ficheros del directorio y luego cambiar uno por uno.
  #3 (permalink)  
Antiguo 15/06/2004, 12:33
Avatar de xcorpion  
Fecha de Ingreso: octubre-2003
Ubicación: m é x i c o
Mensajes: 676
Antigüedad: 20 años, 6 meses
Puntos: 4
en windows podrias hacer esto:

Código PHP:
$dir ´dir *.* /;

while(
$dir[0]){
  
$original chop(array_shift($dir));
  
$cambio str_replace(" ","_",$original);
  
rename($original,$cambio);
  echo 
"se cambio $original por $cambio";
}


Última edición por xcorpion; 15/06/2004 a las 12:37
  #4 (permalink)  
Antiguo 15/06/2004, 12:36
Avatar de yeta  
Fecha de Ingreso: enero-2004
Mensajes: 148
Antigüedad: 20 años, 3 meses
Puntos: 0
pero si yo eso ahora lo ejecuto en la carpeta en la que kiero cambiar los nombres, me cambiaran todos los nombres asi de golpe?
  #5 (permalink)  
Antiguo 15/06/2004, 12:38
Avatar de xcorpion  
Fecha de Ingreso: octubre-2003
Ubicación: m é x i c o
Mensajes: 676
Antigüedad: 20 años, 6 meses
Puntos: 4
puedes hacer la prueva en una carpeta con un solo archivo
  #6 (permalink)  
Antiguo 15/06/2004, 12:41
Avatar de yeta  
Fecha de Ingreso: enero-2004
Mensajes: 148
Antigüedad: 20 años, 3 meses
Puntos: 0
probe esto:

<?
$dir = 'dir *.* /b';

while($dir[0]){
$original = chop(array_shift($dir));
$cambio = str_replace(" ","_",$original);
$ren = 'ren "$original" "$cambio"';
echo "se cambio $original por $cambio";
}
?>

pero el navegador no para de sacarme warnings!!! no para jajajaj que es esto?
es que quiero cambiar los nombres de 59 fotos...
  #7 (permalink)  
Antiguo 15/06/2004, 12:42
Avatar de xcorpion  
Fecha de Ingreso: octubre-2003
Ubicación: m é x i c o
Mensajes: 676
Antigüedad: 20 años, 6 meses
Puntos: 4
y me puedes decir cual es el error que te marca y en que linea?
  #8 (permalink)  
Antiguo 15/06/2004, 13:02
Avatar de yeta  
Fecha de Ingreso: enero-2004
Mensajes: 148
Antigüedad: 20 años, 3 meses
Puntos: 0
pues mira, me sale exactamente esto:

Warning: array_shift(): The argument should be an array in c:\appserv\www\hpwimage\gallery1\prueba.php on line 5
se cambio por

y despues de eso otra vez el error
y el script no termina nunca de cargarse porque no para de repetir el error ese continuamente...se me ha llegado a colgar window$ por dejarlo mucho tiempo y luego pararlo cn Detener....
  #9 (permalink)  
Antiguo 15/06/2004, 13:03
Avatar de xcorpion  
Fecha de Ingreso: octubre-2003
Ubicación: m é x i c o
Mensajes: 676
Antigüedad: 20 años, 6 meses
Puntos: 4
ok, no te desesperes estoy trabajando en eso
  #10 (permalink)  
Antiguo 15/06/2004, 13:03
Avatar de yeta  
Fecha de Ingreso: enero-2004
Mensajes: 148
Antigüedad: 20 años, 3 meses
Puntos: 0
muchas gracias ;)
  #11 (permalink)  
Antiguo 15/06/2004, 13:06
Avatar de xcorpion  
Fecha de Ingreso: octubre-2003
Ubicación: m é x i c o
Mensajes: 676
Antigüedad: 20 años, 6 meses
Puntos: 4
ok ya esta, pero funciona exclisivamente para windows.
Código PHP:
<?
$cmd 
= `dir *.* /b -> dir.txt`;
$dir file("dir.txt");

$i=0;
while(
$dir[$i]){
  
$xfile $dir[$i];
  
$original chop($xfile);
  
$cambio str_replace(" ","_",$original);
  
$ren 'ren "$original" "$cambio"';
  echo 
"se cambio $original por $cambio<br>";
  
$i++;
}
?>
  #12 (permalink)  
Antiguo 15/06/2004, 13:10
Avatar de yeta  
Fecha de Ingreso: enero-2004
Mensajes: 148
Antigüedad: 20 años, 3 meses
Puntos: 0
pues he hecho eso y me sale la pantalla en blanco, pero no me cambia los nombres :S
  #13 (permalink)  
Antiguo 15/06/2004, 13:15
Avatar de xcorpion  
Fecha de Ingreso: octubre-2003
Ubicación: m é x i c o
Mensajes: 676
Antigüedad: 20 años, 6 meses
Puntos: 4
hay caray perdon, tengo una linea mal:
<?
$cmd = `dir *.* /b -> dir.txt`;
$dir = file("dir.txt");

$i=0;
while($dir[$i]){
$xfile = $dir[$i];
$original = chop($xfile);
$cambio = str_replace(" ","_",$original);
rename($original,$cambio);
echo "se cambio $original por $cambio<br>";
$i++;
}
?>
solo quiero saber si tienes windows
  #14 (permalink)  
Antiguo 15/06/2004, 13:17
Avatar de yeta  
Fecha de Ingreso: enero-2004
Mensajes: 148
Antigüedad: 20 años, 3 meses
Puntos: 0
si, estoy en windows...pero sigue sin funcionar, pasa lo mismo que antes...se queda en blanco, me genera el archivo, pero nada...perdon si molesto xcorpion
  #15 (permalink)  
Antiguo 15/06/2004, 13:24
Avatar de xcorpion  
Fecha de Ingreso: octubre-2003
Ubicación: m é x i c o
Mensajes: 676
Antigüedad: 20 años, 6 meses
Puntos: 4
no es molestia, mira puede ser que no te este abriendo el archivo dir.txt que es la lista de los archivos en el directorio, cambialo de:
$dir = file("dir.txt");
por
$dir = file("c:/path/del/servidor/carpeta/dir.txt");

osea, escribe toda la ruta del archivo dir.txt
  #16 (permalink)  
Antiguo 15/06/2004, 13:28
Avatar de yeta  
Fecha de Ingreso: enero-2004
Mensajes: 148
Antigüedad: 20 años, 3 meses
Puntos: 0
pues sigue pasando lo mismo...me crea el archivo en el lugar correcto, pero pasa lo mismo
he probado poner C:/AppServ/www/hpwimage/gallery1/dir.txt y C:\AppServ\www\hpwimage\gallery1\dir.txt pero nada...igual
  #17 (permalink)  
Antiguo 15/06/2004, 13:32
Avatar de xcorpion  
Fecha de Ingreso: octubre-2003
Ubicación: m é x i c o
Mensajes: 676
Antigüedad: 20 años, 6 meses
Puntos: 4
el archivo dir.txt si contiene la lista de los archivos?
  #18 (permalink)  
Antiguo 15/06/2004, 13:37
Avatar de yeta  
Fecha de Ingreso: enero-2004
Mensajes: 148
Antigüedad: 20 años, 3 meses
Puntos: 0
no, lo crea vacio
  #19 (permalink)  
Antiguo 15/06/2004, 14:47
Avatar de xcorpion  
Fecha de Ingreso: octubre-2003
Ubicación: m é x i c o
Mensajes: 676
Antigüedad: 20 años, 6 meses
Puntos: 4
intenta cambiando esto:
dir *.* por
dir .


con un espacio antes y despues del punto
  #20 (permalink)  
Antiguo 15/06/2004, 15:13
Avatar de yeta  
Fecha de Ingreso: enero-2004
Mensajes: 148
Antigüedad: 20 años, 3 meses
Puntos: 0
nada...pasa lo mismo
  #21 (permalink)  
Antiguo 15/06/2004, 15:36
Avatar de MaBoRaK  
Fecha de Ingreso: abril-2003
Ubicación: La Paz - Bolivia
Mensajes: 2.003
Antigüedad: 21 años
Puntos: 35
loading.........


ponle realpath($tuarchivo);


connection closed.
__________________

Maborak Technologies
  #22 (permalink)  
Antiguo 15/06/2004, 16:22
 
Fecha de Ingreso: diciembre-2003
Mensajes: 65
Antigüedad: 20 años, 4 meses
Puntos: 1
Yo diria que es facil haber

$dir = "Tu directorio";

$abrir = opendir($dir);
while(false !==($leer = readdir($abrir))){
if($leer != "." && $leer != ".."){
$archivos[] = $leer;
}
}

$total = count($archivos);
for($i=0;$i<$total;$i++){
$remplazo = str_replace(" ","_",$archivos[$i]);
echo $remplazo."<br>";
}

Eso remplazaria el espacio por un _ a los archivos pero quizas tu quieres ponerlos en un select y no te sale el nombre completo por los espacios si ese es el problema solo tienes que encomillar y listo

Ahora que si quieres renombrara los archivos has esto
$total = count($archivos);
for($i=0;$i<$total;$i++){
$remplazo = str_replace(" ","_",$archivos[$i]);
rename($dir."/".$archivos[$i],$dir."/".$remplazo);
echo $remplazo."<br>";
}

Checa el manual de php en php.net busca la seccion de funciones con ficjeros y directorios te ayudara mucho.
  #23 (permalink)  
Antiguo 16/06/2004, 02:39
Avatar de yeta  
Fecha de Ingreso: enero-2004
Mensajes: 148
Antigüedad: 20 años, 3 meses
Puntos: 0
muchas gracias!!!!ya me funciona!!!!
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 10:18.