Menú

Mostrar Mensajes

Esta sección te permite ver todos los mensajes escritos por este usuario. Ten en cuenta que sólo puedes ver los mensajes escritos en zonas a las que tienes acceso en este momento.

Mostrar Mensajes Menú

Mensajes - ramos_45

#1
Scripting / Re: problema findstr
3 Octubre 2018, 22:13 PM
No veo la diferencia, no lo entiendo. Lo único que veo que tenía mal en foto editada que tenía :exit
#2
Scripting / Re: problema findstr
3 Octubre 2018, 20:43 PM
Cita de: **Aincrad** en  3 Octubre 2018, 18:46 PM
Termine, me tarde por que la ultima vez que hice algo así me lleve 104 lineas y de paso código mal optimizado .

Pero ahora soy mas cuidadoso . y optimizo muy bien mis script.

El code Busca en todos los .txt la palabra que tu escribas. (Pon el bat en la carpeta donde tienes tus txt) o bueno lo modificas a tu gusto.

Código (bash) [Seleccionar]
@echo off
Rem By **Aincrad**
del %temp%\a.txt>nul
del lista.txt>nul
:menu & cls 
color a
echo ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿    EL
echo ³                                                               ³ H
echo ³                                                               ³  a
echo ³   Entrodusca la Palabra / Frase a Buscar.                     ³   c
echo ³                                                               ³    k
echo ³                                                               ³     e
echo ³                                                               ³      r
echo ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ       .NET
echo    Create BY **Aincrad**  Foro el hacker.NET
Set /P string=^>^>^>
if not defined string (goto:menu) >NUL
cls

for %%x in (*.txt) do (echo %%x >> %temp%\a.txt)

for /f "delims=·" %%A IN (%temp%\a.txt) do call:Bs "%%A"

:Bs
cls
   set file=%~1
   if not exist %file% exit >nul
   Echo Por Favor Espere...
   findstr /i %string% %file%
   if %errorlevel% == 0 echo Palabra %string% Encontrada en %file% >> lista.txt
   


100% FUNCIONAL con palabras. y bien optimizado , pruebalo.


funciona perfecto.

he añadido "" a %file% porque en archivos con varias palabras de nombre fallaba.

he intentado añadir 

set file=%~1
   if not exist %file% goto :exit
   Echo Por Favor Espere...
   findstr /i %string% "%file%"
   if %errorlevel% == 0 echo Palabra %string% Encontrada en %file% >> lista.txt


:exit
type lista.txt
pause
exit >nul

para que me muestre en la shell el archivo que genera antes de salir, pero deja de funcionar porque solo me registra 1 archivo.

que le sucede?
#3
Scripting / Re: problema findstr
3 Octubre 2018, 17:10 PM
Eso es, y que me cree un archivo en el que diga "tienes la palabra que has tecleado en estos archivos"
#4
Scripting / problema findstr
3 Octubre 2018, 16:37 PM
Necesito buscar archivos en un directorio que contienen un texto metido a mano, para ello hago:

echo off set /p nombre=Dime tu nombre: echo Hola %nombre%!


echo off
set /p textoabuscar=escribe el texto a buscar:

Findstr /i /s /m /c:%textoabuscar% > archivos.txt
Pause


Pero no me saca nada. Quiero que solo me diga que archivos contienen lo introducido en el directorio
#5
Scripting / Re: ayuda con pequeño script
29 Septiembre 2018, 12:31 PM
Creo que ya está, probé en otro pc y si que funcionó. Gracias
#6
Scripting / Re: ayuda con pequeño script
27 Septiembre 2018, 18:07 PM
Cita de: EdePC en 27 Septiembre 2018, 17:06 PM
- Gracias a FINDSTR puedes hacer uso de un fichero aparte que contenga todas las palabras que quieres filtrar:

Código (bash) [Seleccionar]
C:\Users\EdSon\Desktop>type doc.txt
Xxxxxxxxx DMN_101. Xxxxxxxxx
Xxxxxxxxx UAN_202 xxxxxxxxx
Xxxxxxxxx UIU_111 xxxxxxxxx
Xxxxxxxxx DMN_101xxxxxxxxx

C:\Users\EdSon\Desktop>type filtro.txt
UAN_202
UIU_111

C:\Users\EdSon\Desktop>findstr /v /i /g:filtro.txt doc.txt
Xxxxxxxxx DMN_101. Xxxxxxxxx
Xxxxxxxxx DMN_101xxxxxxxxx





- Puedes crear un fichero .bat (o .cmd) para utilizar el código que ha compartido **Aincrad** y en lugar de poner:

Código (bash) [Seleccionar]
echo tu archivo es %op%

-- pondrías:

Código (bash) [Seleccionar]
findstr /v /i /g:filtro.txt %op% > FILTRADO_%op%

-- No te olvides del fichero filtro.txt donde están las palabras a filtrar. Si el script encuentra dicha palabra en una línea elimina toda esa línea.




- Colorear en CMD si es posible pero no muy práctico, se puede utilizar el mismo FINDSTR con el modificador /A, el detalle es que solo colorea los nombres de los ficheros que contienen la palabra a buscar, por ende se tendría que crear tantos ficheros como líneas haya en tu fichero doc.txt





he probado, y el  ejemplo de aincrad funciona perfecto, pero si le añado como me has dicho tu no funciona. tampoco me funciona tu primer ejemplo.
#7
Scripting / Re: ayuda con pequeño script
27 Septiembre 2018, 11:33 AM
Gracias por vuestras respuestas y vuestra ayuda.

Se podría añadir el documento arrastrando?

Se me a ocurrido otra opción que me ayudaría mucho, y sería resaltar en colores cuando encuentre diversas cosas. Por ejemplo:

Xxxxxxxxx DMN_101. XxxxxxM03xx
Xxxxxxxxx UAN_202 xxxxxxxxx
Xxxxxxxxx UIU_111 xxxxxxxxx
Xxxxxxxxx DMN_101xxxxxxM00xxx


Cuando encuentre M03, me lo pinte de verde y cuando encuentre M03 me lo pinte de rojo

Obviamente, tendría que ser en la consola, pero me gustaría también que exportará como hemos dicho antes(aunque aquí no pueda tener colores)
#8
Scripting / Re: ayuda con pequeño script
27 Septiembre 2018, 11:29 AM
Cita de: animanegra en 27 Septiembre 2018, 10:24 AM
Si es solo eliminar las lineas que cumplan un patron puedes tambien simplemente usar grep que para eso está:

Saludos.


Sería ideal pero lo necesito para Windows
#9
Scripting / Re: ayuda con pequeño script
27 Septiembre 2018, 11:28 AM
Cita de: nokia-6260 en 27 Septiembre 2018, 02:41 AM
Así sin mirar mucho y con esto de aprender un poco de python hice este script , según mis pruebas funciona, aunque seguro que se puede hacer mil veces mejor.
Saludos.

#!/usr/bin/env python

file_r = open("Tu_home/sin_filtrar.txt",'r')
file_w = open("/Tu_home/filtrado.txt", 'w')

lines = file_r.readlines()

for i in lines:
    print(i)



    resul_UAN_202 = i.find('UAN_202')
    resul_UIU_111 = i.find('UIU_111')
    if ((resul_UAN_202 > 0) or  (resul_UIU_111 >0)):
        print("borrar")
    else:
        file_w.write(i)   
print(lines)       



Muchas gracias, yo creo que sí. En batch se crearlo, pero como lo copió y ejecutó para phyton?
#10
Scripting / Re: ayuda con pequeño script
27 Septiembre 2018, 11:26 AM
Gracias por vuestras respuestas!

Cita de: EdePC en 27 Septiembre 2018, 02:20 AM
Saludos,

- En la Command Line de Windows (cmd) puedes utilizar el comando FIND con el modificador /v para que imprima las líneas que NO contengan la palabra buscada, y opcionalmente utilizar /i para no distinguir mayúsculas de minúsculas:

Código (bash) [Seleccionar]
copy con doc.txt
Xxxxxxxxx DMN_101. Xxxxxxxxx
Xxxxxxxxx UAN_202 xxxxxxxxx
Xxxxxxxxx UIU_111 xxxxxxxxx
Xxxxxxxxx DMN_101xxxxxxxxx^Z
        1 archivo(s) copiado(s).

type doc.txt
Xxxxxxxxx DMN_101. Xxxxxxxxx
Xxxxxxxxx UAN_202 xxxxxxxxx
Xxxxxxxxx UIU_111 xxxxxxxxx
Xxxxxxxxx DMN_101xxxxxxxxx

find /v /i "UAN_202" doc.txt | find /v /i "UIU_111" > FILTRADO_doc.txt

type FILTRADO_doc.txt

---------- DOC.TXT
Xxxxxxxxx DMN_101. Xxxxxxxxx
Xxxxxxxxx DMN_101xxxxxxxxx



Entiendo que con ese codigo solo usarías las líneas 1,8,14y 16 no? El resto que pones es lo que respondería.

Los tengo muchos códigos que copiar para eliminar, unos 80,y posteriormente tal vez tenga que añadir más. Este script yo sabría modificarlo y añadirlos, pero lo van a usar otras personas que no. Habría la posibilidad de al inicio crear un menú que te pregunte si quieres añadir o quitar códigos?

Se podría simplificar la línea:
find /v /i "UAN_202" doc.txt | find /v /i "UIU_111" >

Para no tener que poner así los 80 códigos?