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

 

 


Tema destacado: Introducción a Git (Primera Parte)


+  Foro de elhacker.net
|-+  Programación
| |-+  Scripting
| | |-+  Como puedo arrastrar y concatenar archivos de texto en un BATCH
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Como puedo arrastrar y concatenar archivos de texto en un BATCH  (Leído 10,022 veces)
PUCH84

Desconectado Desconectado

Mensajes: 4


Ver Perfil
Como puedo arrastrar y concatenar archivos de texto en un BATCH
« en: 24 Abril 2014, 16:00 pm »

Hola,

tengo un script mega sencillo que me ayuda para concatenar archivos de texto ordenados simplemente ejecutandolo. Sería este:

Código:
@Echo OFF

copy/B "*.txt" "script_total.txt"

Exit

La pega es que concantenaría todos los ficheros de txt presentes en el directorio y querría hacerlo sólo los ficheros que yo le indicara, había pensado intentar arrastrarlo al .bat para simplificarlo, he encontrado info en varios hilos del foro pero no consigo concretarlo...


Para poder arrastrar el fichero al icono del .bat he leido este ejemplo de otro hilo que me permite arrastrar y ver la ruta de un archivo:

Código:
@Echo OFF
:: Para un solo archivo:
REM If NOT "%~1"=="" (echo %~1 >> file.txt )
 
:: Para un conjunto de archivos:
If NOT "%~1"=="" (echo %* >> file.txt )
 
Exit

Pero no consigo unir los dos códigos para que me funcione correctamente, alguien me podría echar una mano?

Muchas gracias, un saludo


En línea

Eleкtro
Ex-Staff
*
Desconectado Desconectado

Mensajes: 9.885



Ver Perfil
Re: Como puedo arrastrar y concatenar archivos de texto en un BATCH
« Respuesta #1 en: 24 Abril 2014, 17:11 pm »

Un ejemplo para arrastrar y soltar archivos a la consola:

[Batch] [Aporte] (O eso creo xD) Consola de reciclaje v1.0 By Elektro

Si los quieres "concatenar" de forma más interna, solo debes cambiar/adaptar el patrón de búsqueda del comando Copy...

Código:
copy /A "*NombreParcial*.txt" "script_total.txt"

o:

Código:
copy /A "Nombre Completo 1.txt"+"Nombre Completo 2.txt" "script_total.txt"

Saludos


« Última modificación: 24 Abril 2014, 18:25 pm por Eleкtro » En línea



PUCH84

Desconectado Desconectado

Mensajes: 4


Ver Perfil
Re: Como puedo arrastrar y concatenar archivos de texto en un BATCH
« Respuesta #2 en: 24 Abril 2014, 17:28 pm »

Gracias por responder Elektro, estoy revisando el código que indicas y parece un poco complicaete, estuve viendo que el tema de arrastrar a la consola parece más complicado no? yo con arrastrar al icono del batch me conformo que es lo que estuve viendo en el 2º ejemplo que puse.

El problema es que no sé como tratar los argumentos que introduzco al arrastrar para que luego el copy me funcione...


EDITO:

He llegado a esta conclusión para 3 archivos y hace lo que quiero, pero no estoy muy familiarizado con bucles en BATCH, como podría hacerlo para todos los casos?

Código:
@Echo OFF
copy/B %~nx1+%~nx2+%~nx3 "script_final.txt"
pause
Exit
« Última modificación: 24 Abril 2014, 18:12 pm por PUCH84 » En línea

Eleкtro
Ex-Staff
*
Desconectado Desconectado

Mensajes: 9.885



Ver Perfil
Re: Como puedo arrastrar y concatenar archivos de texto en un BATCH
« Respuesta #3 en: 24 Abril 2014, 19:11 pm »

En Batch puedes pasar 255 argumentos, pero solo 9 de ellos se pueden usar (%1-%9), para seguir usando el resto de argumentos necesitas usar el comando SHIFT para desplazar a la izquierda el última argumento (%8<<%9<<%10), y así sucesivamente hasta terminar con los argumentos que pasaste.

Lo considero una completa pérdida de tiempo porque Batch es así de simple, la simpleza es el peor de sus defectos y esto lo convierte en una herramienta en la que es necesario invertir demasiado tiempo para escribir el código para realizar una tarea que debería ser simple y así lo es en cualquier otro lenguaje, así que para no perder el tiempo, te escribiré una solución en VBS:

Código
  1. ' La ruta del archivo de texto plano resultante.
  2. TextFile = ".\CombinedTextFiles.Txt"
  3.  
  4. ' Constante que indica al método que se precisa abrir el archivo para leerlo.
  5. Const ReadText = 1
  6.  
  7. ' Constante que indica al método que se precisa abrir el archivo para añadir texto.
  8. Const AppendText = 8
  9.  
  10. ' Instancio el objeto que contiene los métodos de lectura/escritura.
  11. set objFSO = CreateObject("Scripting.FileSystemObject")
  12.  
  13. ' Iteración de argumentos.
  14. For Each Arg In WScript.Arguments
  15.  
  16.    ' Obtengo y combino el contenido de texto de los archivos pasados como argumento.
  17.    CombinedText = CombinedText & vbNewLine &  _
  18.                   objFSO.OpenTextFile(Arg, ReadText, False).ReadAll
  19.  
  20. Next
  21.  
  22. ' Abro/Creo el archivo resultante para su posterior escritura.
  23. set objTextFile = objFSO.OpenTextFile(TextFile, AppendText, True)
  24.  
  25. ' Agrego el texto de los archivos combinados al archivo resultante.
  26. objTextFile.WriteLine(CombinedText)
  27.  
  28. ' Libero el objeto.
  29. objTextFile.Close
  30.  
  31. ' Código de salida satisfactorio.
  32. Wscript.Quit(0)

Saludos
« Última modificación: 24 Abril 2014, 19:13 pm por Eleкtro » En línea



PUCH84

Desconectado Desconectado

Mensajes: 4


Ver Perfil
Re: Como puedo arrastrar y concatenar archivos de texto en un BATCH
« Respuesta #4 en: 27 Abril 2014, 23:49 pm »

Hola Elektro

gracias por contestar, tengo poca idea de VBscripting, el procedimiento para ese código como sería? Lo guardo como .vbs supongo no? como le introduzco los argumentos?

He probado a arrastrar los archivos al icono que era lo que quería hacer en BATCH pero no me funciona, en cambio ejecutándolo con doble click sí me genera el fichero CombinedTextFiles vacío.



Un saludo.
« Última modificación: 28 Abril 2014, 00:20 am por PUCH84 » En línea

Eleкtro
Ex-Staff
*
Desconectado Desconectado

Mensajes: 9.885



Ver Perfil
Re: Como puedo arrastrar y concatenar archivos de texto en un BATCH
« Respuesta #5 en: 28 Abril 2014, 08:00 am »

He probado a arrastrar los archivos al icono que era lo que quería hacer en BATCH pero no me funciona, en cambio ejecutándolo con doble click sí me genera el fichero CombinedTextFiles vacío.
Lo que ocurre es que al arrastrar y soltar archivos en el icono, el directorio de trabajo actual del Script cambia a "C:\Windows\System32", y el archivo combinado se crea en ese directorio, debes asignar la ruta correcta.

Reemplaza:
Citar
Código:
TextFile = ".\CombinedTextFiles.Txt"

Por:
Código:
TextFile = "C:\CombinedTextFiles.Txt"

O por:
Código:
TextFile = Replace(WScript.ScriptFullName, WScript.ScriptName, "") & "CombinedTextFiles.Txt"
Nota: Eso indica el directorio donde se encuentra el Script.vbs, como cuando haces doble click en el archivo.

Saludos
« Última modificación: 28 Abril 2014, 08:03 am por Eleкtro » En línea



PUCH84

Desconectado Desconectado

Mensajes: 4


Ver Perfil
Re: Como puedo arrastrar y concatenar archivos de texto en un BATCH
« Respuesta #6 en: 28 Abril 2014, 09:49 am »

Joder muchas gracias funciona perfecto! eres el amo :)

Un saludo
En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
Arrastrar lista y comprobar si existen archivos. [Batch]
Scripting
Dany3j 6 8,352 Último mensaje 28 Febrero 2014, 11:56 am
por poc
no puedo arrastrar archivos a mi photoshop :(
Diseño Gráfico
x64core 7 55,223 Último mensaje 20 Septiembre 2013, 18:34 pm
por Fellyn22
[BATCH] ¿Como puedo adaptar un texto a otro?
Scripting
Meine programmen 1 4,556 Último mensaje 8 Abril 2012, 18:39 pm
por Eleкtro
[Batch] ¿Cómo leer caracteres y concatenar hasta cierto carácter?
Scripting
lsfer010 0 2,636 Último mensaje 20 Octubre 2017, 05:51 am
por lsfer010
¿Cómo puedo crear un código de Batch para eliminar archivos?
Scripting
Ronxs 3 10,142 Último mensaje 21 Febrero 2024, 15:45 pm
por elektrostudios2
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines