elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Usando Git para manipular el directorio de trabajo, el índice y commits (segunda parte)


+  Foro de elhacker.net
|-+  Programación
| |-+  Scripting
| | |-+  Bat para juntar 2 ficheros txt en 1 por lineas
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Bat para juntar 2 ficheros txt en 1 por lineas  (Leído 12,763 veces)
maschino2

Desconectado Desconectado

Mensajes: 6


Ver Perfil
Bat para juntar 2 ficheros txt en 1 por lineas
« en: 21 Julio 2010, 17:33 pm »

Buenas

Estoy haciendo un bat que lee 2 ficheros txt distintos y escribe en otro mas uniendo la linea 1 de cada fichero.
SI el fichero 1.txt tiene
1
2
3
4
5
Y el fichero a.txt tiene
a
b
c
d
e
lo que busco es generar un fichero que sea
texto mio 1
texto mio a
texto mio 2
texto mio b
texto mio 3
texto mio c
texto mio 4
texto mio d

Consigo leer el fichero y darle el formato con un solo fichero usando un for /f %%I IN (1.txt) do
pero no se como leer el segundo sin que se me duplique todo, ya que si lo meto otro for dentro, me lo duplica todo...

He estado echando un vistazo por el foro, y he visto que separais en 2 ficheros uno, pero no unis por lineas...

Me podriais echar una manita??? Gracias


En línea

flony


Desconectado Desconectado

Mensajes: 584



Ver Perfil
Re: Bat para juntar 2 ficheros txt en 1 por lineas
« Respuesta #1 en: 21 Julio 2010, 21:01 pm »

bueno como es costumbre te van a decir q no se hace trabajos....lo cual es verdad aunque suene chocante  :-\ pero te doy unas ideas y las vas a tener que modificar como te guste a vos como son iguales te muestro para un txt y vos lo vas intercalando para 1.txt y a.txt  para colmo va a ser modular la cosa xq es un poco complejo ;)
primero contar los renglones de  1.txt para saber cuando no queden mas renglones  :laugh:
Código:
:variables
set /a contador=0
for /f "tokens=*" %%_ in (1.txt) do (
set /a contador+=1)
set /a var=%contador%
despues fijarte si la variable "var" es igual a cero asi deja de trabajar por medio de bucles, si no es asi copie y borre una linea
Código:
set var=%a%
linea=0
:bucledelprimertxt
set /a linea=%linea%+1
if %var%==0 (goto echo listo) else set /A var=%var%-1
<"1.txt" set /p "primera_linea="
set "primera_linea"
(
ECHO 1d
ECHO E
) | EDLIN /B 1.txt > nul 2>&1
::aca iria la duplicacion para a.txt
goto bucledelprimertxt
bue es una idea cubriria los dos txt de una obvio intercalando las filas...pero bue a modo de ejemplo y que averigues un poquito http://foro.elhacker.net/scripting/acciones_sobre_archivos_de_texto_batch-t242748.0.html
para adaptarlo te puede servir....pero leo es mas especialista en el trabajo de textos en bat  ;D


« Última modificación: 21 Julio 2010, 21:03 pm por flony » En línea

si un problema no tiene solucion entonces no es un problema...es algo inevitable
maschino2

Desconectado Desconectado

Mensajes: 6


Ver Perfil
Re: Bat para juntar 2 ficheros txt en 1 por lineas
« Respuesta #2 en: 22 Julio 2010, 07:54 am »

Lo primero de todo, gracias por la ayuda. Siempre es de agradecer que te echen una mano.
No busco el que me hagan el script, ya que ya le tengo casi hecho (a excepcion de ese pequeño gran detalle), pero no conseguia saber como pelearme con 2 ficheros a la vez (con uno si suelo) para generar un tercero... Probare a ver que consigo con lo que me dices a ver si consigo lo que quiero...

Thank you...
En línea

maschino2

Desconectado Desconectado

Mensajes: 6


Ver Perfil
Re: Bat para juntar 2 ficheros txt en 1 por lineas
« Respuesta #3 en: 22 Julio 2010, 09:00 am »

Otra pregunta rapida...
De un solo fichero de texto se podria guardar en un bucle for toda la linea por un lado y ldistintos tokens por otro???
Me explico.. si mi fichero es:
pepito.1.verde.perro
juanito.2.azul.gato

Podria con un bucle for guardar en distintas variables por un lado la linea entera y por otro las variables separadas por el "."

Podria ser algo asi?
for /f %%linea in (1.txt) do (
for /f "tokens=1,2,3,4 delims=." %%A in (%%linea) do (
echo %%linea
echo %%C
echo %%B
echo %%A
)
)

No me funciona... pero no veo donde tengo el problema... (aparte del de no tener mucha idea, logicamente, jejjeje)
En línea

flony


Desconectado Desconectado

Mensajes: 584



Ver Perfil
Re: Bat para juntar 2 ficheros txt en 1 por lineas
« Respuesta #4 en: 22 Julio 2010, 14:47 pm »

a ver lo de hacer guardar la linea y que guarde cada palabra de la linea en variables distintas todo dentro del mismo "ciclo" por definirlo de alguna forma :rolleyes: me parece parecido a lo que intente hacer hace un tiempo  :) es como trabajar con vectores y no se puede  :-\ , podemos intentar simularlos  :silbar: pero bue es no ...ahora como no hay que darse por vencido y se puede siempre buscar la vuelta
de ultima lee lo que hice y fijate si te sirve es una simulacion de un vector jajaja no es por hacer propaganda pero parece lo que queria hacer  :silbar:
http://foro.elhacker.net/scripting/vectores_solucionado-t297506.0.html
che una cosita q vi en tu code para que salga en pantalla una variable es echo %variable% no echo %%variable
« Última modificación: 22 Julio 2010, 14:57 pm por flony » En línea

si un problema no tiene solucion entonces no es un problema...es algo inevitable
leogtz
. . .. ... ..... ........ ............. .....................
Colaborador
***
Desconectado Desconectado

Mensajes: 3.069


/^$/


Ver Perfil WWW
Re: Bat para juntar 2 ficheros txt en 1 por lineas
« Respuesta #5 en: 22 Julio 2010, 17:31 pm »

Puedes guardar cada línea de los archivos en sus respectivos arrays, luego recorrerlos simultáneamente.

O crear un script en el que le indiques la línea que quieres mostrar y te la muestre, no debe de ser muy difícil.
« Última modificación: 22 Julio 2010, 17:37 pm por Leo Gutiérrez. » En línea

Código
  1. (( 1 / 0 )) &> /dev/null || {
  2. echo -e "stderrrrrrrrrrrrrrrrrrr";
  3. }
  4.  
http://leonardogtzr.wordpress.com/
leogutierrezramirez@gmail.com
maschino2

Desconectado Desconectado

Mensajes: 6


Ver Perfil
Re: Bat para juntar 2 ficheros txt en 1 por lineas
« Respuesta #6 en: 23 Julio 2010, 07:48 am »

Muchas gracias a todos
Al final, la opcion que puse arriba si me funciono, con alguna modificacion...
For /F %%A IN (imagenes.txt) DO (
   for /F "tokens=1-7,8* delims=." %%a in ("%%A") do (
        echo %%A
        echo %%a
        echo %%b
        echo %%c
        echo %%d
        echo %%e
        )
)

La opcion de usar 2 arrays no la conozco en batch, pero si me pudieras indicar como hacerlo estaria bien..
El hacerlo en perl con 2 arrays (que hubiera sido lo mas sencillo me imagino) no era una opcion, ya que la ejecucion va sobre win y tendria que meterselo a las maquinas donde se ejecuta el local (opcion no viable)

Muchas gracias a todos por la ayuda

Por cierto, a alguno se le ocurre como eliminar las lineas duplicadas de un TXT quitandole antes los caracteres a partir de un caracter?? E intentado jugar de nuevo con 2 bucles, pero en la comparacion solo consigo o dejarlo como esta, o duplicar mas lineas...
« Última modificación: 23 Julio 2010, 08:42 am por maschino2 » En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
Crear unas lineas para un .bat
Scripting
Xandrovk 3 5,731 Último mensaje 5 Enero 2011, 18:59 pm
por leogtz
[Shell Script] ¿Cómo unir lineas de distintos ficheros?
Scripting
‭lipman 3 7,924 Último mensaje 6 Mayo 2011, 23:40 pm
por d00ze13
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines