[Batch] Consulta (SOLUCIONADO)

Iniciado por DA KILLER, 19 Julio 2010, 16:47 PM

0 Miembros y 1 Visitante están viendo este tema.

DA KILLER

Buenas, me he quedado atorado en un problema y no se como abordarlo  :-[

Quiero que el batch busque una variable ingresada por el usuario en un archivo de texto., lo que no logro hacer es que el script busque EXACTAMENTE lo ingresado por el usuario, normalmente si uno ingresa un caracter el script devuelve todos los resultados con dicho caracter, lo que busco es que solo mostrase los resultados exactos, y en caso de no haber ninguno diera un mensaje de error, no se si es posible eso.

Desde ya, muchas gracias.
.: DA KILLER :.



FerJGS

Utiliza FINDSTR /c y un For /f

flony

este code me dio hace tiempo leo y sirve For /f "tokens=2 delims=:" %%a in ('FIND /I " LoQueQuieresEncontrar" dir.txt') do (set pa=%%a)
si un problema no tiene solucion entonces no es un problema...es algo inevitable

leogtz

Código (dos) [Seleccionar]
findstr /X /R "%variable%" || {
echo No se encontro nada.
}


/X   Print lines that match exactly.

Aquí va a depender mucho de lo que ingrese el usuario.

Si ingresa "hola", findstr debería buscar solo las líneas que tengan:
hola

Creo que debería funcionar.
Código (perl) [Seleccionar]

(( 1 / 0 )) &> /dev/null || {
echo -e "stderrrrrrrrrrrrrrrrrrr";
}

http://leonardogtzr.wordpress.com/
leogutierrezramirez@gmail.com

DA KILLER

ah ok, porque en la ayuda de la shell (de mi versión de windows) dice: "/X        Imprime líneas que no coinciden con exactitud." así que me volvía loco sin sentido :$

bueno, mas tarde lo pruebo y confirmo.

Otra duda que me surgió, es si es posible añadir a esta lína un indicador de modo que con otro for pueda comparar la concordancia con otra variable extraída de otro archivo.

para que se entienda hacer que en el primer for se compare una variable con el contenido de un archivo (en este caso listado de usuarios) y setee otra variable para su posterior uso en otro for (que quedase algo como "2)username" y en otro archivo con los pass compare otro valor ingresado por el usuario, el password "2)password" y cotejara los mismos).

Me tengo que ir, pero más tarde cuando vuelva les doy el code y me dicen que es lo que está fallando.

PD: GRACIASSSSSSSSSSS
.: DA KILLER :.



DA KILLER

De momento estoy experimentando un problema con la shell que no se a que se debe, pero se tilda al ejecutar el comando FIND o FINDSTR, ya sea desde cmd, DOS como OS o desde un script.

Generalmente se tilda el proceso y no me permite siquiera terminarlo mediante ^C, sino desde taskmgr, así que si me pudiesen ayudar con otra forma de hacerlo se los agradeceré enormemente, lamento malgastar su tiempo pero no logro solucionar el problema y es parte de un programa con el que vengo renegando de hace una semana y aún no llego ni a hacer un tercio de lo que debe hacer :$
.: DA KILLER :.



leogtz

Cita de: DA KILLER en 20 Julio 2010, 01:10 AM

para que se entienda hacer que en el primer for se compare una variable con el contenido de un archivo (en este caso listado de usuarios) y setee otra variable para su posterior uso en otro for (que quedase algo como "2)username" y en otro archivo con los pass compare otro valor ingresado por el usuario, el password "2)password" y cotejara los mismos).
Pon un ejemplo aquí mismo para ver cómo proceder.
Cita de: DA KILLER en 20 Julio 2010, 06:02 AM
De momento estoy experimentando un problema con la shell que no se a que se debe, pero se tilda al ejecutar el comando FIND o FINDSTR, ya sea desde cmd, DOS como OS o desde un script.


¿Qué código estás utilizando?
Código (perl) [Seleccionar]

(( 1 / 0 )) &> /dev/null || {
echo -e "stderrrrrrrrrrrrrrrrrrr";
}

http://leonardogtzr.wordpress.com/
leogutierrezramirez@gmail.com

DA KILLER

FINDSTR /X /S "line" test.txt
.: DA KILLER :.



leogtz

¿No será por la opción /s que busca en las subcarpetas?
Código (perl) [Seleccionar]

(( 1 / 0 )) &> /dev/null || {
echo -e "stderrrrrrrrrrrrrrrrrrr";
}

http://leonardogtzr.wordpress.com/
leogutierrezramirez@gmail.com

DA KILLER

y sobre el ejemplo es lo que me esta volviendo loco, yo tendría 3 datos:

1) Los ingresados por el usuario (login.bat)
2) Los de un archivo con los nombres de usuario (ucrlst.txt)
3) Las contraseñas de los usuarios (passlst.txt)

Lo que yo quiero es que primero el usuario ingrese el nombre de usuario del programa (ejemplo "KILLER")
Luego el script lo busque en ucrlst.txt (a modo de ejemplo supongamos que ucrlst.txt tiene el siguiente contenido:
KILLER
DA KILLER
THE KILLER
USER)
Luego, si el usuario existe (lo encuenta en ucrlst.txt) proceda a pedir un pass, el cual cotejará con el contenido de passlst.txt.

He aquí los dilemas:

1º) No sabía como hacer para que el script solo devuelva los valores que correspondan exactamente (si el usuario escribe "KILLER" que coteje el pass de "KILLER" y no de "THE KILLER")
2º) No se me ocurre como indicar al script cual es la pass de cada usuario, teniendo todas en un mismo archivo

y ahora compruebo y te digo el error, o se tilda o me dice 'Se ha alcanzado el máximo nivel de recursividad de "setlocal"' y sino activo la expansion no me permite utilizar el comando FINDSTR
.: DA KILLER :.