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

 

 


Tema destacado: Arreglado, de nuevo, el registro del warzone (wargame) de EHN


+  Foro de elhacker.net
|-+  Programación
| |-+  Scripting
| | |-+  Acciones sobre archivos de texto. [Batch]
0 Usuarios y 4 Visitantes están viendo este tema.
Páginas: 1 ... 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 [32] 33 34 35 Ir Abajo Respuesta Imprimir
Autor Tema: Acciones sobre archivos de texto. [Batch]  (Leído 445,165 veces)
Eleкtro
Ex-Staff
*
Desconectado Desconectado

Mensajes: 9.885



Ver Perfil
Re: Acciones sobre archivos de texto. [Batch]
« Respuesta #310 en: 10 Marzo 2015, 14:07 pm »

@ServH

Muestra el código que llevas hecho por ti mismo, aquí no se hacen tareas.

Te muestro un ejemplo para iterar el log y asignar el "nombre" a la variable de FOR:

Código
  1. For /F "UseBackQ Tokens=1,* Delims= " %%a In ("Archivo.log") Do (Echo %%~b)

Luego, solo tendrías que renombrar los archivos utilizando dicha variable para asignar el nuevo nombre del archivo jpeg.

Saludos


« Última modificación: 10 Marzo 2015, 17:59 pm por Eleкtro » En línea



ServH

Desconectado Desconectado

Mensajes: 5


Ver Perfil
Re: Acciones sobre archivos de texto. [Batch]
« Respuesta #311 en: 10 Marzo 2015, 14:28 pm »

Hola Elektro.

Pues no tengo nada más que el pseudocódigo ya que voy probando módulos para que me hagan pequeñas funciones. (Estoy empezando con este lenguaje)

Ahora te pondré una muestra.

Lectura del archivo.

filename   name   email   comment   twitter   phone
PHOTO_1   maria            
PHOTO_6   paco         
PHOTO_7   juan            
         
En un primer lugar lo que quiero que haga el bat es leer este .txt y guardar en una variable el nombre del fichero var1=PHOTO1 y otra variable con el nombre var=maria
Pero estas variables quiero que guarden relación (No se como explicarlo).

Después el .bat hará una lectura de los archivos y cuando encuentre PHOTO1 que es = a var1 lo cambie por var2.

Se podría antes de ejecutar nada hacer un tratamiento del log quedando así.
PHOTO_1   maria            
PHOTO_6   paco         
PHOTO_7   juan

P:D No pido el código hecho, solo quiero entender que tengo que hacer y solucionar las cosas en las que estoy fallando.

Un saludo. y gracias.         


En línea

Eleкtro
Ex-Staff
*
Desconectado Desconectado

Mensajes: 9.885



Ver Perfil
Re: Acciones sobre archivos de texto. [Batch]
« Respuesta #312 en: 10 Marzo 2015, 18:02 pm »

P:D No pido el código hecho, solo quiero entender que tengo que hacer y solucionar las cosas en las que estoy fallando.

Ok, pues te explico, el log consiste en dos "argumentos" (o Tokens), el primero sería el nombre de la imagen (PHOTO_1), y el segundo sería el nombre de la persona (María), pues, solo tienes que modificar el parámetro "Tokens" de un For /F (cómo el que te mostré antes), para que tome esos dos argumentos por separado, usando cómo deliminator de argumento el caracter "espacio", de esa forma almacenarás en la variable %%a el nombre de la imagen, y en la variable %%b el nombre de la persona, obteniendo esa "relación" que quieres.

Lo que acabo de comentar ya lo hace el For que mostré arriba, pero si quieres entenderlo mejor, lee aquí:
For /f - Loop through text | Windows CMD | SS64.com

Saludos
« Última modificación: 10 Marzo 2015, 18:05 pm por Eleкtro » En línea



ServH

Desconectado Desconectado

Mensajes: 5


Ver Perfil
Re: Acciones sobre archivos de texto. [Batch]
« Respuesta #313 en: 11 Marzo 2015, 09:26 am »

Hola Elektro.

Primero que nada agradecerte la ayuda desinteresada, me ha sido de utilidad entender mejor que es lo que necesita el programa.

Y en segundo lugar, y observando que tienes experiencia en este lenguaje, ¿Crees que es la manera más optima de realizar esto?

Muchas gracias por el tutorial.

Un saludo.
En línea

Eleкtro
Ex-Staff
*
Desconectado Desconectado

Mensajes: 9.885



Ver Perfil
Re: Acciones sobre archivos de texto. [Batch]
« Respuesta #314 en: 11 Marzo 2015, 10:05 am »

¿Crees que es la manera más optima de realizar esto?

No, Batch es una herramienta limitada, está diseñada y orientada a la automatización de tareas simples, los resultados y la eficiencia de cualquier otro lenguaje siempre será más óptimo que Batch, sin excepción alguna.

Sobre el problema que tienes, en parte ese texto que has mostrado se podría considerar un archivo CSV delimitado por espacios, y digo en parte, porque no se si alguno de los campos de esa tabla contiene un "espacio" (ej: 'María del monte'), entonces el algoritmo que uses para delimitar los campos basándose en ese "espacio" delimitador no servirá, y será mucho más complejo, porque si la cantidad de espacios es desconocida... no se cómo vas a reconocer un nombre a menos que utilices una base de datos de nombres, jaja.

Por otro lado, la tarea no requiere más que la utilización de un lenguaje simple cómo es Batch (suponiendo que no haya más espacios adicionales), pero óptimo no es que sea.

En fin, no me enrollo más, lee esta respuesta para hallar una solución mucho más eficiente que Batch:
http://foro.elhacker.net/programacion_general/programa_de_busqueda_con_archivo_csv-t431563.0.html;msg2001628#msg2001628

PD: Ese mismo Snippet que desarrollé en VB.Net te debería servir, pero cambiando el delimitador por un espacio o tabulación o lo que uses, claro está.

PD2: Cómo explico en ese comentario, cualquier otro lenguaje sirve, cómo Python, Ruby, C/C++, Java, etc, la resolución del problema es practicamente la misma en cualquier lenguaje, que consiste en generar un búcle que lea linea por linea, solo que unos lenguajes te lo ponen más fácil que otros, y a partir de ahí la elaboración del algoritmo para hacerlo menos o más sofisticado es cosa tuya.

Saludos!
« Última modificación: 11 Marzo 2015, 10:12 am por Eleкtro » En línea



ServH

Desconectado Desconectado

Mensajes: 5


Ver Perfil
Re: Acciones sobre archivos de texto. [Batch]
« Respuesta #315 en: 11 Marzo 2015, 10:38 am »

Buenísima la respuesta.

Pero estoy un poco "atado" por la gente de "arriba" jaja, voy a intentar convencerlos de que este sistema no es óptimo por que ahora mismo te iba a escribir por el mismo problema.

¿Que pasa si tiene un nombre compuesto?, ya está el lío montado, no me sirve.

En resumen, y por si tienes una idea mejor que la mía, la situación que se me ha planteado es esta.

Tenemos un software que toma una fotografía, pero las opciones de este programa solo nos permite guardarlas con un nombre y un sufijo EJ: PHOTO_1

Después al usuario le pide un nombre, que este se guarda para usarlo en el campo EMAIL (Algo que no entiendo, por que lo ha desarrollado así)

Y la necesidad era simplificar el proceso de renombrar las fotos, para no tener a una persona aburrida haciendo esto y que fuera con un único clic haciendo uso del log.
En línea

Eleкtro
Ex-Staff
*
Desconectado Desconectado

Mensajes: 9.885



Ver Perfil
Re: Acciones sobre archivos de texto. [Batch]
« Respuesta #316 en: 11 Marzo 2015, 11:43 am »

@ServH

Si los campos de esa tabla están separados usando "tabulación", entonces lo tienes fácil y puedes utilizar el ejemplo que mostré.
 
En cambio, si se usa un espacio para separar los campos, y si además hay nombres compuestos cómo has comentado, entonces no hay nada que sea viable, porque realmente necesitarías gestionar una base de datos de nombres para tomarla como referencia a la hora de delimitar correctamente los campos y así poder aumentar la probabilidad de éxito (no sería 100% fiable).

Lo único que se me ocurre, en caso de que los campos esten separados por espacios y no por tabulaciones, es que le pidas al autor de la aplicación que modifique el código para usar un caracter delimitable (por ejemplo un punto y coma ";"), por que el diseño actual sería incorrecto e improductivo.

PD: Y si la aplicación es un ensamblado .Net y no puedes recurrir a la ayuda del autor, entonces siempre puedes recurrir a la mágia de la ingenieria inversa (en este caso utilizando técnicas mediante Reflection) para localizar y modificar el caracter que está usando el programa para separar las celdas.

Saludos.
En línea



ServH

Desconectado Desconectado

Mensajes: 5


Ver Perfil
Re: Acciones sobre archivos de texto. [Batch]
« Respuesta #317 en: 11 Marzo 2015, 11:52 am »

@Eleкtro

Pues intenté hablar con el desarrollador, y le pedí que incluyera un módulo para que el campo que el usuario rellena como "nombre" que luego acaba siendo el asunto del correo si eliges la opción de enviar la imagen lo cambiara, pero ni caso.

Se me estaban ocurriendo un par de cosas con java, y tener un .jar sencillo que me haga la misma función, además de que tengo más libertad para programar en este lenguaje.

Seguramente, abra otro hilo, para no ensuciar este, y pediré algún que otro consejo ya que estoy oxidado.

Muchas gracias @Eleкtro por la ayuda prestada hasta el momento.
Un saludo.
En línea

light310oct

Desconectado Desconectado

Mensajes: 15



Ver Perfil
Re: Acciones sobre archivos de texto. [Batch]
« Respuesta #318 en: 29 Marzo 2015, 23:04 pm »

Yo tengo una duda sobre algo que he intentado hacer con VB6.0 y nada mas no he podido sera que lo podre hacer con un batch?, la idea es agregar datos entre la ultima etiqueta    "</tr>"y la etiqueta "</table>"a fin de ir armandome una tabla con datos de una variable
Código
  1. <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
  2.    <head>
  3.  
  4.        <title>Tabla de registro</title>
  5.    </head>
  6.    <body>
  7.  
  8.              <td>Celda 1</td>
  9.              <td>Celda 2</td>
  10.              <td>Celda 3</td>
  11.          </tr>
  12.          <tr>
  13.              <td>Celda 4</td>
  14.              <td>Celda 5</td>
  15.              <td>Celda 6</td>
  16.          </tr>
  17.        </table>
  18.    </body>
  19. </html>
« Última modificación: 30 Marzo 2015, 10:06 am por Eleкtro » En línea

Si buscas resultados distintos, no hagas siempre lo mismo
Eleкtro
Ex-Staff
*
Desconectado Desconectado

Mensajes: 9.885



Ver Perfil
Re: Acciones sobre archivos de texto. [Batch]
« Respuesta #319 en: 30 Marzo 2015, 10:14 am »

Yo tengo una duda sobre algo que he intentado hacer con VB6.0 y nada mas no he podido sera que lo podre hacer con un batch?, la idea es agregar datos entre la ultima etiqueta    "</tr>"y la etiqueta "</table>"a fin de ir armandome una tabla con datos de una variable

Si, es posible hacerlo, pero la forma de llevar a cabo esa tarea en un lenguaje simple cómo Batch resultaría en un código bastante tedioso e ineficiente, Batch no puede manipular documentos Html, y además, ya que estás utilizando un lenguaje más apto no deberías rebajar el nivel a una herramienta simplona cómo Batch, no hay necesidad ni justificación para hacer eso,
lo mejor es que intentes seguir haciéndolo en un lenguaje capacitado, yo personalmente te recomiendo VB.Net/C#, aunque de todas formas en VB6 puedes utilizar expresiones regulares para hacerlo de una manera menos efectiva.

Saludos
En línea



Páginas: 1 ... 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 [32] 33 34 35 Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
Modificar archivos de texto [batch] [Perl] « 1 2 »
Scripting
bjeli1980 10 13,751 Último mensaje 17 Mayo 2010, 09:07 am
por bjeli1980
[BATCH] Ayuda guardando archivos de texto a php
Scripting
Geormarsch 2 4,360 Último mensaje 20 Septiembre 2011, 16:33 pm
por Poderoscuro1207
[BATCH] [APORTE] Rutina TEXTMAN para manipular archivos de texto
Scripting
Eleкtro 2 8,099 Último mensaje 15 Marzo 2014, 15:17 pm
por FranciskoAsdf
Como puedo arrastrar y concatenar archivos de texto en un BATCH
Scripting
PUCH84 6 10,022 Último mensaje 28 Abril 2014, 09:49 am
por PUCH84
Ayuda con batch para crear archivos de texto plano
Scripting
seu230 6 3,125 Último mensaje 5 Octubre 2018, 10:28 am
por seu230
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines