Autor
|
Tema: Como puedo arrastrar y concatenar archivos de texto en un BATCH (Leído 10,022 veces)
|
PUCH84
Desconectado
Mensajes: 4
|
Hola, tengo un script mega sencillo que me ayuda para concatenar archivos de texto ordenados simplemente ejecutandolo. Sería este: @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: @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
Mensajes: 9.885
|
Un ejemplo para arrastrar y soltar archivos a la consola: [Batch] [Aporte] (O eso creo xD) Consola de reciclaje v1.0 By ElektroSi los quieres "concatenar" de forma más interna, solo debes cambiar/adaptar el patrón de búsqueda del comando Copy... copy /A "*NombreParcial*.txt" "script_total.txt" o: 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
Mensajes: 4
|
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? @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
Mensajes: 9.885
|
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: ' La ruta del archivo de texto plano resultante. TextFile = ".\CombinedTextFiles.Txt" ' Constante que indica al método que se precisa abrir el archivo para leerlo. Const ReadText = 1 ' Constante que indica al método que se precisa abrir el archivo para añadir texto. Const AppendText = 8 ' Instancio el objeto que contiene los métodos de lectura/escritura. set objFSO = CreateObject("Scripting.FileSystemObject") ' Iteración de argumentos. For Each Arg In WScript.Arguments ' Obtengo y combino el contenido de texto de los archivos pasados como argumento. CombinedText = CombinedText & vbNewLine & _ objFSO.OpenTextFile(Arg, ReadText, False).ReadAll Next ' Abro/Creo el archivo resultante para su posterior escritura. set objTextFile = objFSO.OpenTextFile(TextFile, AppendText, True) ' Agrego el texto de los archivos combinados al archivo resultante. objTextFile.WriteLine(CombinedText) ' Libero el objeto. objTextFile.Close ' Código de salida satisfactorio. Wscript.Quit(0)
Saludos
|
|
« Última modificación: 24 Abril 2014, 19:13 pm por Eleкtro »
|
En línea
|
|
|
|
PUCH84
Desconectado
Mensajes: 4
|
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
Mensajes: 9.885
|
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: TextFile = ".\CombinedTextFiles.Txt" Por: TextFile = "C:\CombinedTextFiles.Txt" O por: 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
Mensajes: 4
|
Joder muchas gracias funciona perfecto! eres el amo Un saludo
|
|
|
En línea
|
|
|
|
|
Mensajes similares |
|
Asunto |
Iniciado por |
Respuestas |
Vistas |
Último mensaje |
|
|
Arrastrar lista y comprobar si existen archivos. [Batch]
Scripting
|
Dany3j
|
6
|
8,352
|
28 Febrero 2014, 11:56 am
por poc
|
|
|
no puedo arrastrar archivos a mi photoshop :(
Diseño Gráfico
|
x64core
|
7
|
55,223
|
20 Septiembre 2013, 18:34 pm
por Fellyn22
|
|
|
[BATCH] ¿Como puedo adaptar un texto a otro?
Scripting
|
Meine programmen
|
1
|
4,556
|
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
|
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
|
21 Febrero 2024, 15:45 pm
por elektrostudios2
|
|