Foro de elhacker.net

Programación => Scripting => Mensaje iniciado por: Tango01 en 13 Febrero 2006, 01:25 am



Título: Batch que pide user y pass, tira error
Publicado por: Tango01 en 13 Febrero 2006, 01:25 am
Hola a todos.  ::)

Me estoy estrenando en el foro y espero ser bienvenido.

He leido todo el tuto de programación en BAT, de soplo,  y los siguientes mensajes e hice un pequeño programita.
Pero (siempre hay un pero  :P ) en una perte me trabo y no sé por qué.

Les pongo el codigo...:
Código
  1. @echo off
  2. title -~=Registrate=~-
  3. color 3a
  4.  
  5. :user
  6. echo Escriba su nombre de cuenta y pulse Enter:
  7. set /p use=
  8. if %use% == D:\%use% goto pass
  9. if not exist D:\%use% goto nexis
  10.  
  11. :pass
  12. cls
  13. echo %use% escribi tu contraseña y pulsa Enter.
  14. set /p pass=
  15. if %pass% == D:\Pase\%pass% goto inicio
  16. if not exist D:\Pase\%pass% goto mal
  17.  
  18. :mal
  19. echo La contraseña es incorrecta, pulsa Enter e intenta de nuevo.
  20. goto pass
  21.  
  22. :nexis
  23. echo El nombre de usuario no existe,
  24. echo queres hacer una cuenta con ese nombre??
  25. echo 1 - Si.
  26. echo 2 - No.
  27. echo 3 - Volver al menu anterior.
  28.  
  29. set /p tecla=
  30. if %tecla%== 1 goto :1
  31. if %tecla%== 2 goto :2
  32. if %tecla%== 3 goto :3
  33.  
  34. :1
  35. echo 1 - Si.
  36. goto create
  37.  
  38. :2
  39. echo 2 - No.
  40. goto fin
  41.  
  42. :3
  43. echo 3 - Atras.
  44. goto user
  45.  
  46. :create
  47. mkdir D:\%use%
  48. goto inicio
  49.  
  50. :inicio
  51. cls
  52. ECHO     Bienvenido %use%
  53. goto fin
  54.  
  55. :fin
  56. cls
  57. echo     Hasta luego.

El programa primero te pide un usuario que tiene una carpeta en el disco D: si existe la carpeta con su nombre te pide la contraseña (aca tira el problema) y si el usuario no existe te da la opción de crear una carpeta. Las carpetas con el nombre de la contraseña las hago solo yo a mano en la carpeta D:\Pase\

Lo de ver si el usuario existe y mandarlo a la parte de la contraseña, todo bien. Pero cuando meto el pass siempre me dice que La contraseña es incorrecta, y no sé por qué?

Esperaba que me pudiesen orientar un poco y decirme si ven el error.

Desde ya se los agradezco y espero su ayuda.

Un saludo.  ;)

P.D.: No sé si este será el foro adecuado para estas preguntas, si no lo és, mover el tema a donde sea más conveniente.


Título: Re: Batch que pide user y pass, tira error
Publicado por: Hendrix en 13 Febrero 2006, 19:31 pm
usa %username% por %use%... ;) ;) ;)

Salu2

Hendrix



Título: Re: Batch que pide user y pass, tira error
Publicado por: Tango01 en 13 Febrero 2006, 21:57 pm
Gracias, Punk-rock

Pero sigo en la misma, lo unico que hace es cambiarle el nombre a lo que hace las carpetas de usuarios.

Así quedó ahora...:

Código:
@echo off
title -~=Registrate=~-
color 3a

:username
echo.
echo Escriba su nombre de cuenta y pulse Enter:
set /p username=   -------->>//Modifiqué esto
if %username% == D:\%username% goto pass       -------->>//Modifiqué esto
if not exist D:\%username% goto nexis       -------->>//Modifiqué esto

:pass
echo %username% escribi tu contraseña y pulsa Enter.       -------->>//Modifiqué esto
set /p pass=
if %pass% == D:\Pase\%pass% goto inicio
if not exist D:\Pase\%pass% goto mal

:mal
echo La contraseña es incorrecta, pulsa Enter e intenta de nuevo.
pause
goto pass

:nexis
echo.
echo El nombre de usuario no existe,
echo queres hacer una cuenta con ese nombre??
echo 1 - Si.
echo 2 - No.
echo 3 - Volver al menu anterior.
echo.

set /p tecla=
if %tecla%== 1 goto :1
if %tecla%== 2 goto :2
if %tecla%== 3 goto :3

:1
echo 1 - Si.
goto create

:2
echo 2 - No.
goto fin

:3
echo 3 - Atras.
goto user

:create
mkdir D:\%username%      -------->>//Modifiqué esto
goto inicio

:inicio
cls
ECHO     Bienvenido %username%      -------->>//Modifiqué esto
pause
goto fin

:fin
cls
echo     Hasta luego.
pause

Espero que puedas/an darme alguna otra pista para ver si logro hacerlo andar.

Te agradezco mucho y espero su ayuda
Saludos.  ::)


Título: Re: Batch que pide user y pass, tira error
Publicado por: kapototal1 en 23 Noviembre 2010, 03:35 am
Creo, solo creo, que es por que en la parte que escribiste
Código:
:user
echo.
echo Escriba su nombre de cuenta y pulse Enter:
set /p use=
if %use% == D:\%use% goto pass
if not exist D:\%use% goto nexis

no anda por que pones "D:\%use%".

Yo lo que haria, es crear un archivo con el contenido deseado y guardarlo con una extensión .bat, y luego "traer" el dato con un FOR.

por ejemplo...

Código:
@ echo off
FOR /F "tokens=1 delims=;" %%G IN (archivo.dat) DO (
set pass=%%G
)
echo Ingrese la contraseña:
set/p cont=
If %cont%==%pass% goto bien else goto mal

:bien
cls
echo.
echo La contraseña esta bien.
pause
exit

:mal
cls
echo.
echo La contraseña esta mal.
pause
exit

Y por ejemplo el contenido del archivo.dat sea:
Código:
1234
( que seria la contraseña correcta )

La funcion del FOR en ese caso es leer la primer palabra que hay en el archivo .dat y la setea con una variable que vos quieras en este caso "pass".

Espero que te sirva mi informacion. Saludos  ;)



Título: Re: Batch que pide user y pass, tira error
Publicado por: flony en 23 Noviembre 2010, 22:06 pm
no podes traer info de esta forma
Código:
if %pass% == D:\Pase\%pass% goto inicio
por lo q pones exciste una carpeta llamada Pase y adentro estan los pass
seria mas facil guardarlo en un txt y sacar esa info con un for
Código:
FOR /F "tokens=1" %%G IN (pass.txt) DO (
set pass=%%G
)
...aclaro sera para solo un usuario xq si pones mas pas dentro de ese txt va a ser un poco mas complicado...o sea seria una pass1.txt pass2.txt o meter todos los pass en un txt
si estuvieran todos juntos al guardar tanto los usuarios deberias guardar la clave en el txt
Citar
usuario1 123
usuario2 234
etc
for /f "tokens=2" %%_ in ('find /i "usuario1" D:\Pase) do (set pass=%%_)


Título: Re: Batch que pide user y pass, tira error
Publicado por: kapototal1 en 23 Noviembre 2010, 22:22 pm
eeem.. Es lo que le explique yo en la respuesta de arriba, excepto por la parte de
Código:
for /f "tokens=2" %%_ in ('find /i "usuario1" D:\Pase) do (set pass=%%_)


Título: Re: Batch que pide user y pass, tira error
Publicado por: kapototal1 en 23 Noviembre 2010, 22:27 pm
Una duda, que funcion cumple el

Código:
in ('find /i "usuario1" D:\Pase)

no entiendo que funcion cumple... si me la podrias explicar te lo agradezco.. ;)


Título: Re: Batch que pide user y pass, tira error
Publicado por: flony en 24 Noviembre 2010, 11:34 am
si lo pones solo
Código:
find /i "usuario1" D:\Pase
vas a ver que en la salida de pantalla va a buscar la palabra usuario en D:\Pase lo que logra for es que esa salida de pantalla se pueda seguir usando en este caso que sea una variable
una pequeña observacion me olvide de un asterisco simple al final  :silbar: :silbar:
estaba viendo de vuelta el code  :P
Código:
for /f "tokens=2" %%_ in ('find /i "usuario1" D:\Pase') do (set pass=%%_)
ahi ta bien


Título: Re: Batch que pide user y pass, tira error
Publicado por: Novlucker en 24 Noviembre 2010, 11:42 am
Solamente estan respondiendo un post muerto en febrero del 2006 :¬¬