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>;
da
__________________ 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. |