system("dir "05042007 de 41 a 80"\*.xml /b >zz.csv");
open(Inic,"zz.csv");
@filas="";
i=0;
while(<Inic>)
{
rename(Inic,Inic+i);
}
esto es solo un comienzo.
ojala puedan darme una manito!

| |||
![]() hola. necesito renombrar archivos en una carpeta. por ejemplo tengo nombres de archivo hola1.txt, hola2.txt... asi hasta el 40. en otra carpeta tengo o mismo. entonces enb esta segunda carpeta debo empezar a poner hola41.txt, hola42.txt... asi hasta 80. he leido algo que puede servirme: system("dir "05042007 de 41 a 80"\*.xml /b >zz.csv"); open(Inic,"zz.csv"); @filas=""; i=0; while(<Inic>) { rename(Inic,Inic+i); } esto es solo un comienzo. ojala puedan darme una manito! ![]()
__________________ Dios es mas grande que tu problema :-) |
| |||
Re: renombrar archivos Eso se puede hacer en Perl en una sola línea, desde la misma línea de comandos:
Código:
Hay que hacer una comprobación de $x <=40 porque sino, al renombrar hola1.txt a hola41.txt lo volvería a leer en las siguientes vueltas, convirtiéndolo en hola81.txt (al menos eso hace en mi Linux). perl -le 'opendir(DIR,".");while($f=readdir(DIR)){next unless ($x)=$f=~/hola(\d+)/;next if $x > 40; $x+=40;print $f;rename($f,"hola$x.txt")}' |
| |||
![]() en windos deberia funcionar igual? lo otro instale ActivePerl-5.8.8.817-MSWin32-x86-257965.exe en mi pc y al poner C:perl se pega.... tonces en vista de esto modifique el script asi: opendir(DIR,"."); while($f=readdir(DIR)) {next unless ($x)=$f=~/ERP_025_20070411_(\d+)/;next if $x <= 40; $x+=1;print $f;rename($f,"ERP_025_20070411_$x.txt")} y bueno. no me funciona... ![]()
__________________ Dios es mas grande que tu problema :-) |
| |||
![]() me resulto perfecto.!! muy agradecido. una duda que hace la linea next unless ($x)=$f=~/ERP_025_20070322_(\d+)/; Denuevo gracias. ![]()
__________________ Dios es mas grande que tu problema :-) |
| ||||
Re: renombrar archivos Esa línea hace que el bucle valla a la siguiente línea al menos que la variable $f contenga la información ERP_025_20070322_(\d+) y la últimos dígitos luego del _ se carga en la variable $x Espero haber sido claro... Saludos
__________________ Esteban Quintana |
| |||
![]() me funciona super bien hasta que necesité cambiarle el nombre a 20 carpetas diferentes. y con 40 archivos cada uno. o sea renombrar archivos hasta el 800. en la tercera carpeta desde el 81 al 120 se mareo el script. y de ahi en adelante. lo he revisado y no logro dar con el problema. quisiera saber que tema de perl necesito leer para entender. muchas gracias. ![]()
__________________ Dios es mas grande que tu problema :-) |
| |||
Re: renombrar archivos Una forma fácil de hacerlo sería metiendo los nombres de los archivos nada más empezar en un array. Y luego recorrer el array renombrando los ficheros. En la anterior solución se va renombrando a la vez que se recorre el directorio, con lo que siempre existe el peligro de que el bucle se encuentre con los ficheros ya renombrados. |
| |||
![]() [quote= En la anterior solución se va renombrando a la vez que se recorre el directorio, con lo que siempre existe el peligro de que el bucle se encuentre con los ficheros ya renombrados.[/QUOTE] para ejecutar cada vez el proceso. inserto el script en la carpeta y le modifico solo next if $x <= 40; $x+=40; sabes. por que no me recomiendas algun manual. Fijate que esto lo hago por lo menos una vez a la semana y se torna muy tedioso. Muchisimas gracias por responder. Atte. MG
__________________ Dios es mas grande que tu problema :-) |
| |||
Re: renombrar archivos http://nereida.deioc.ull.es/~lhp/perlexamples/ http://www.eui.upm.es/CC/Chuletas/Perl/ http://flanagan.ugr.es/perl/index2.htm http://es.tldp.org/Tutoriales/PERL/tutoperl-html/ http://merelo.net/tutoperl/ http://www.geocities.com/SiliconVall...ion/8266/perl/ http://www.htmlpoint.com/perl/ |
| |||
![]() mira. parece que estoy cerca de la solucion. pero no funciona el rename
Código:
Gracias por tu ayu@files = `dir c:\perl\p /b /on *.txt`; $mm=10; foreach $x (@files) { $nom=substr($x,0,length($x)-6); $ext='txt'; rename("$x","$nom.$mm.$ext"); print "$nom.$mm.$ext\n"; $mm++; } $val=<STDIN>; ![]()
__________________ Dios es mas grande que tu problema :-) |
| |||
Re: renombrar archivos Prueba a poner rename(...) or die "ERROR: No pude renombrar: $!\n"; para ver si te da una pista de porqué no lo ha podido hacer. |