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
| | |-+  ubicar linea en txt conociendo palabra [batch] (SOLUCIONADO)
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: ubicar linea en txt conociendo palabra [batch] (SOLUCIONADO)  (Leído 15,406 veces)
flony


Desconectado Desconectado

Mensajes: 584



Ver Perfil
ubicar linea en txt conociendo palabra [batch] (SOLUCIONADO)
« en: 20 Octubre 2009, 15:11 pm »

no se si se puede...pero se puede saber en que linea esta una palabra en un txt sabiendo que palabra es ?
ejm
Citar
hola como estas me llamo
flony y y hoy por la noche salgo
y quiero sabr si salis vos
ae que flony esta en la segunda linea


« Última modificación: 10 Noviembre 2009, 14:43 pm por flony » En línea

si un problema no tiene solucion entonces no es un problema...es algo inevitable
Mr. Crowley


Desconectado Desconectado

Mensajes: 343


Costa Rica


Ver Perfil WWW
Re: ubicar linea en txt conociendo palabra [batch]
« Respuesta #1 en: 20 Octubre 2009, 15:18 pm »

OK, creo que esto no se puede hacer con una sola funcion; para averiguar la linea en la que se encuentra:

1. Abra el archivo y recorralo linea por linea (llevando un contador de la linea procesada, logicamente)
2. "Pregunte" en cada linea si se encuentra la palabra (eso lo hace con la funcion InStr())

Si encuentra la linea, entonces detiene la escritura y cierra el archivo. Listo... facil  :xD


En línea

Mi blog personal: www.calirojas.com
FranciskoAsdf

Desconectado Desconectado

Mensajes: 231


Ni bueno, ni malo. Solo nada.


Ver Perfil WWW
Re: ubicar linea en txt conociendo palabra [batch]
« Respuesta #2 en: 20 Octubre 2009, 15:29 pm »

yo necesito lo mismo pero en batch u.u alguien sabe como se puede hacer >.<?


de ante mano muchas gracias :)
En línea

Asdf debería ser algún tipo de función.
leogtz
. . .. ... ..... ........ ............. .....................
Colaborador
***
Desconectado Desconectado

Mensajes: 3.069


/^$/


Ver Perfil WWW
Re: ubicar linea en txt conociendo palabra [batch]
« Respuesta #3 en: 20 Octubre 2009, 16:28 pm »

Código:
type "file.txt" | find /n /i "flony"

O juega con findstr /n.

Saludos.
En línea

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

Desconectado Desconectado

Mensajes: 109


-cyman-


Ver Perfil
Re: ubicar linea en txt conociendo palabra [batch]
« Respuesta #4 en: 20 Octubre 2009, 23:30 pm »

Buenas... Sé que hay muchas maneras sencillas de hacer lo que piden, pero aquí te dejo un .bat que te servirá para eso. Espero les sea útil.

Código
  1. @echo off
  2. :Main
  3. cls
  4. set /p file=Indique el nombre del archivo:
  5. set /p string=Indique la palabra a buscar:
  6. setlocal enabledelayedexpansion
  7. set /a nchar=0
  8. call:Contar
  9. set /a nlin=0
  10. For /f "useback tokens=*" %%F in ("%file%") do (
  11.     set /a nlin+=1
  12.     set "line=%%F"
  13.     set /a xcont=0
  14.     call:Comparar
  15. )
  16. echo. & echo Terminado. & pause>nul & goto Main
  17.  
  18. :Contar
  19. If /i "!string:~% style="color: #448888;">nchar%,1!" == "" goto:eof
  20. set /a nchar+=1
  21. goto Contar
  22.  
  23. :Comparar
  24. If /i "!line:~% style="color: #448888;">xcont%,%nchar%!" == "% style="color: #448888;">string%" (
  25.     set mtch=T
  26.     call:Msj
  27. )
  28. If /i "!line:~% style="color: #448888;">xcont%,%nchar%!" == "" (
  29.     set mtch=F
  30.     call:Msj
  31.     goto:eof
  32. )
  33. set /a xcont+=1
  34. goto Comparar
  35.  
  36. :Msj
  37. If "%mtch%" == "T" (
  38.     echo PALABRA ENCONTRADA: [LINEA %nlin%] %line% & echo.
  39.     call:Choice
  40. )
  41. If "%mtch%" == "F" echo LINEA %nlin%: %line%
  42. goto:eof
  43.  
  44. :Choice
  45. set /p ch=¨Continuar la b£squeda (S/N)?:
  46. If not defined ch goto Choice
  47. If /i %ch% == s goto:eof
  48. If /i %ch% == n goto Main
  49. goto:eof
  50.  
« Última modificación: 12 Noviembre 2009, 01:29 am por -=cym@n=- » En línea

flony


Desconectado Desconectado

Mensajes: 584



Ver Perfil
Re: ubicar linea en txt conociendo palabra [batch]
« Respuesta #5 en: 21 Octubre 2009, 14:01 pm »

cyman sos un capo  ;-)  probe el bat y es exactamente lo que estaba buscando  ;D mil gracias...o sea esta resuelto...mil gracias a todos...jijiji me lo pongo a traducir al  codigo del bat
Lo estuve leyendo y esto es lo que no entiendo si me lo pueden explicar seria genial para entender xq y como lo hizo
Citar
set "line=%%F"
Citar
"!string:~%nchar%,1!"
« Última modificación: 21 Octubre 2009, 17:20 pm por flony » En línea

si un problema no tiene solucion entonces no es un problema...es algo inevitable
<ИΘZIЭ(ŦB>

Desconectado Desconectado

Mensajes: 109


-cyman-


Ver Perfil
Re: ubicar linea en txt conociendo palabra [batch]
« Respuesta #6 en: 21 Octubre 2009, 21:47 pm »

Qué bueno que te sirviera! Puedo decirte que lo que sé de Batch lo he aprendido solo aquí en el foro y en tan solo unos meses gracias a la ayuda de los compañeros y moderadores que de verdad están dispuestos a ayudar. De modo que me uno a ti en el agradecimiento.

Lo de tus preguntas es muy sencillo.

En primer lugar:
Código:
set "line=%%F"

Si te fijas bien, lo que hago en esta línea es crear la variable line con el valor de la variable del FOR (%%F), pues esta última se encarga de extraer el texto de cada línea del archivo que indicaste. Por eso le di el nombre "line" (línea) a esa variable.
Código:
For /f "useback tokens=*" %%F in ("%file%") do (
...
set "line=%%F"
...
)

Tu segunda duda:
Código:
"!string:~%nchar%,1!"

Bueno, esta línea la uso en la etiqueta :Contar para saber cuántos caracteres (nchar) tiene la palabra que indicaste (string) para buscar en el archivo de texto (file). Si te fijas, esta etiqueta lo que hace es ir sumando nchar hasta que llega al último caracter. Déjame darte algunos ejemplos:

Si tengo la variable "VAR=Hola mundo" y quiero mostrar su valor, solo debo usar un echo:
Código:
echo Valor de VAR: "%VAR%"
Se mostraría esto:
Código:
Valor de VAR: "Hola mundo"

Ahora, si no quiero ver todo su contenido sino una fracción, por ejemplo, los primeros tres caracteres, haría lo siguiente:
Código:
echo Valor fraccionado de VAR: "%VAR:~0,3%"
El primer número indica la posición (0) y el segundo (3) los caracteres que se mostrarán desde esa posición. Así pues, el resultado de esto sería:
Código:
Valor fraccionado de VAR: "Hol"

Bueno, no sé si ya conocías ese detalle, pero por si acaso lo expliqué.

Ahora bien, debes haber notado que en mi código original hay algunas diferencias, particularmente respecto a los dos signos de admiración (!) que usé. Esto se debe a que necesitaba usar una variable para determinar la posición, en vez de indicarla directamente con un número. No funcionaría de hacerlo de este modo:
Código:
%string:~%nchar%,1%
Ahora bien, debo mencionar que para que puedan usarse estos signos (!) en vez de los porcentajes (%) hay que escribir la línea:
Código:
setlocal enabledelayedexpansion
que si ves, usé al principio antes de llamar a la etiqueta :Contar. Eso lo aprendí hace poco, aunque debo confesar que no entiendo bien por qué es necesario. He leído que tiene que ver con unas tales variables retardadas, pero hasta ahí.

Creo que esto abarca lo de tus dudas, y tal vez más... Jaja! Espero que por lo menos hayas quedado claro.
« Última modificación: 21 Octubre 2009, 22:10 pm por cyman » En línea

flony


Desconectado Desconectado

Mensajes: 584



Ver Perfil
Re: ubicar linea en txt conociendo palabra [batch] (solucionado)
« Respuesta #7 en: 22 Octubre 2009, 03:26 am »

muy bien explicado  ::)....eso es tener ganas de enseñar  ;-) ...gracias men...es mas me diste un ejemplo practico de para que sirve la polimetria...q apenas entiendo bien
este bue problema solucionado
« Última modificación: 10 Noviembre 2009, 14:40 pm por flony » En línea

si un problema no tiene solucion entonces no es un problema...es algo inevitable
Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
Repetición de palabra en batch « 1 2 »
Scripting
javiii_11 13 8,421 Último mensaje 1 Diciembre 2010, 00:01 am
por javiii_11
[Batch] Ayuda con If (repetir palabra, no letra) « 1 2 »
Scripting
Geormarsch 15 10,239 Último mensaje 14 Octubre 2011, 19:55 pm
por Geormarsch
[Batch] Ayuda: Añadir linea a batch
Scripting
Grasky 4 8,176 Último mensaje 4 Octubre 2012, 11:17 am
por Grasky
[BATCH] ¿Cómo ubicar la ventana en coordenadas específicas?
Scripting
cyberalejo17 4 10,932 Último mensaje 27 Abril 2014, 05:08 am
por cyberalejo17
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines