[Solucionado] Renombrar un archivo con el contenido de otro.

Iniciado por sr_corsario, 9 Noviembre 2009, 12:46 PM

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

sr_corsario

Buenas. Necesitaria hacer esto en batch

Tengo esta situación:

Archivo 1.txt
Archivo 2.txt -->El contenido de este archivo quiero que sea el nombre del archivo 1.txt


Por ej esi en 2.txt tengo "Hello world" quiero que el archivo 1.txt cambie a nombre "Hello world.txt"

No necesito que verifique si el nombre es demasiado largo.



EDit: Había pensado en algo parecido a esto: (Aunque se que no es correcto)



set /p name=&type 2.txt
rename 1.txt %name%.txt






Gracias

<ИΘZIЭ(ŦB>

Una pregunta: tu "archivo2.txt" tiene cuantas líneas? Solo contiene el texto que quieres usar para renombrar el "archivo1.txt", o tiene algo más?
Si tiene una sola se podría hacer como propusiste, pero usando un FOR. Fíjate:


For /f "useback tokens=*" %%R in ('type "Archivo2.txt"') do (ren "Archivo1.txt" "%%R")


Eso funcionaría en caso de que el texto en "Archivo2.txt" ya tenga un nombre válido de archivo con extensión y todo. Si no es así, tendrías que adjuntar la extensión tú:
ren "Archivo1.txt" "%%R.txt"

Ahora bien, debes saber que si "Archivo2.txt" tiene más de una línea de texto el nombre final del "Archivo1.txt" será el de la última línea. Por eso te hacía la pregunta. Ve si te sirve eso.

sr_corsario

#2
 ;-)
Muchisimasss gracias!!!! ya estaba desesperado...

Si. el archivo solo tiene una sola linea. Ahora mismo voy a probar.

GRacias!!

Edit: Lo acabo de probar y algo me falla. El resultado es:

"Archivo1.txt" se renombra a "type Archivo2.txt"

Alguna idea?

<ИΘZIЭ(ŦB>

Qué raro! Intenta cambiando el comando TYPE por SORT < "Archivo2.txt". Debería quedarte así:


For /f "useback tokens=*" %%R in ('sort < "Archivo2.txt"') do (ren "Archivo1.txt" "%%R.txt")


Pruébalo así a ver. Sino funciona dime y luego pruebo en la computadora. Ahorita te estoy respondiendo desde el celular.

leogtz

Cita de: sr_corsario en  9 Noviembre 2009, 12:46 PM



set /p name=&type 2.txt
rename 1.txt %name%.txt


Quita el & de tu código, es un caracter especial.
Código (perl) [Seleccionar]

(( 1 / 0 )) &> /dev/null || {
echo -e "stderrrrrrrrrrrrrrrrrrr";
}

http://leonardogtzr.wordpress.com/
leogutierrezramirez@gmail.com

sr_corsario

Me siguen sin funcionar las posibles soluciones :'(

Gracias por la ayuda

<ИΘZIЭ(ŦB>

Acabo de notar que estaba usando algo sin necesidad. Con el ciclo FOR que te di no es necesario usar el comando TYPE o algún otro, pues con sólo colocar el nombre del archivo basta. Sería así:

For /f "useback tokens=*" %%R in ("Archivo2.txt") do (ren "Archivo1.txt" "%%R.txt")


Prueba ese que sí te dará resultado.

sr_corsario

#7
Ouuu yessSS!!!


Muchas gracias ahora si que funciona!!!

Menos mal que tengo este foro para aprender un poquito!!!

GRAcias

Sr Corsario

Edit: Una cosita mas.
¿Como hago para asignar el contenido de archivo2.txt como variable?

For /f "useback tokens=*" %%R in ("Archivo2.txt") do (set contenido=%%R)


edit2:Upsss  sii!! :D funciona esto tb!!!

Gracias otra vez

<ИΘZIЭ(ŦB>

Exacto! Aunque te sugiero que cierres entre comillas la declaración de la variable, porque si la línea tiene espacios el valor llegará hasta ahí y podría darte un error. Hazlo así:
set "contenido=%%R"
Eso te guardará el contenido completo pero sin las comillas. Es muy útil.Pruébalo.
Y haciendo alusión a tu comentario sobre el foro te puedo asegurar que si sigues frecuentándolo aprenderás muy rápido. Muchos de los miembros de aquí son de verdad muy prestos a ayudar, y gracias a ellos he podido aprender bastante en apenas meses. Así que no te pierdas.