Ayuda para renombrar archivos

Iniciado por indruin, 6 Julio 2012, 23:00 PM

0 Miembros y 1 Visitante están viendo este tema.

indruin

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!

Anvil

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:


# nombres de archivo actuales act.txt
1.txt
2.txt
3.txt
9.txt
10.txt



# 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


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();
}
}
\\::_--__!!ss"1122

Eleкtro

#2
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
@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
jose
kosta
pepe
jaime
christian






EDITO: Si la lista.txt es más bien así:
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:
RENAME "Archivo!NUM!.txt" "%%#"

Saludos