Foro de elhacker.net

Programación => Scripting => Mensaje iniciado por: indruin en 6 Julio 2012, 23:00 pm



Título: Ayuda para renombrar archivos
Publicado por: indruin en 6 Julio 2012, 23:00 pm
Hola a tod@s!!

Tengo una carpeta con mas de 100 archivos, todos con el mismo nombre mas un identificador numerico, digamos archivo1.txt, archivo2.txt, archivo3.txt... etc

Quisiera cambiarles el nombre de acuerdo a una lista en txt:

1JuanPerez.txt
2PedroPerez.txt
3CamiloPerez.txt
etc

es decir al "archivo1.txt"  renombrarlo  como "1JuanPerez.txt", obteniendo el nuevo nombre desde el listado dentro del txt y asi para todos los archivos...


Es posible esto?

Desde ya muchas gracias!


Título: Re: Ayuda para renombrar archivos
Publicado por: Anvil en 6 Julio 2012, 23:11 pm
Si es posible, para hacerlo tendrías que crear un archivo txt que tenga la información de que nombre de archivo actual mapear con el nombre de archivo que quieres, ejemplo:

Código:
# nombres de archivo actuales act.txt
1.txt
2.txt
3.txt
9.txt
10.txt

Código:
# nuevos nombres de archivo nuv.txt
juan.txt
pedro.txt
sam.txt
mer.txt
edi.txt

Después en pseudocódigo lo que deberías de obtener es lo siguiente

Código:
void main()
{
// leemos el contenido del archivo
string file_actual = leer("act.txt");
string file_nuevos = leer("nuv.txt");

// dividimos la cadena a partir del salto de linea
string[] nombres_actuales = file_actual.tokenize("\n");
string[] nombres_nuevos = file_nuvos.tokenize("\n");

// checamos que tengan la misma longitud
if(nombres_actuales.length != nombres_nuevos.length)
{
// si no la tienne imprimir mensaje de error y regresar
print("No tienen la misma longitud");
return;
}

// si tienen la misma longitud ahora hay que renombrar
// recorremos el arreglo con los nombres actuales
for(var i = 0; i < nombres_actuales.length; i++)
{
// obtenemos la referencia al archivo
File f = open(nombres_actuales[i]);
// renombramos el archivo
f.rename(nombres_nuevos[i]);
// salvamos el archivo
f.save();
}
}


Título: Re: Ayuda para renombrar archivos
Publicado por: Eleкtro en 7 Julio 2012, 00:50 am
Suponiendo que hay X cantidad de archivos.txt, Y la misma cantidad de lineas con un nombre escrito en la "lista.txt", Esto te funcionaría:

Test.bat
Código:
@Echo OFF
Setlocal enabledelayedexpansion

Set "LISTA=Lista.txt"

For /F "Tokens=*" %%# in ('Type "%LISTA%"') Do (
Set /A NUM+=1
Echo Renombrando: Archivo!NUM!.txt ^> !NUM!%%#.txt
RENAME "Archivo!NUM!.txt" "!NUM!%%#.txt"
)

Pause
Exit



Lista.txt
Código:
jose
kosta
pepe
jaime
christian

(http://img404.imageshack.us/img404/8357/prtscrcaptureuc.jpg)



EDITO: Si la lista.txt es más bien así:
Código:
1JuanPerez.txt
2PedroPerez.txt
3CamiloPerez.txt
(Con número al principio, Y extensión al final)

Entonces modifica esta línea en el código de arriba:
Código:
RENAME "Archivo!NUM!.txt" "%%#"

Saludos