Ayuda con programa en batch

Iniciado por MPG.h, 16 Febrero 2012, 17:53 PM

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

MPG.h

Estoy programando un .bat que lee login y contraseña:

@echo off&goto:main&goto:EOF
:logi
rem Ingreso de Usuario
set log=0
set /p log=Ingrese Login:
goto:elogi

:logo
rem Proceso de Usuario
if %log%==User (set locg=1) else set logc=0
goto:elogo

:passi
rem Ingreso de contraseña
set pass=0
set /p pass=Ingrese Password:
goto:epassi

:passo
rem Proceso de contraseña
if %pass%==pass (set passc=1) else set passc=0
goto:epasso

:main
title BBCR Beta
echo Bienvenido
echo.
call:logi
:elogi
call:logo
:elogo
rem Chequeo de login
if logc=1 (echo Usuario Aceptado) else echo Usuario denegado&pause > nul&goto:EOF
call:passi
:epassi
call:passo
:epasso
rem Chequeo de pass
if passc=1 (echo Contraseña Aceptada) else echo Contraseña denegada&pause > nul&goto:EOF
pause
cls
echo Fin del programa
pause
exit


Al ingresar el login ( User ) el programa se cierra
Lo probe en el simbolo de sistema y me sale asi:

C:/dev/bat/login.bat
Bienvenido

Ingrese login:USER
No se esperaba =1 en este momento
:huh:

Ideas?

PS:Mi primer post! ::)

Geormarsch

Toma este lo hice yo veamos que tal te funciona

Código (dos) [Seleccionar]

@echo off
::::::::::::::::::::::::::::::::::::::::::::::::::::::::

Color a

mode con cols=40 lines=15

Title USUARIO ^& PASSWORD

Set Usuario=Geormarsch

Set Pas=CACA

:::::::::::::::::::::::::::::::::::::::::::::::::::::::

:Sub_Menu
cls
echo.
Set /p User= Ingrese usuario ^>^>
Set /p Pass= Ingrese pass ^>^>
Goto Verificar

:::::::::::::::::::::::::::::::::::::::::::::::::::::::

:Verificar
cls
If %User%==%Usuario% (Goto Menu_)
If %Pass%==%Pas% (Goto Menu_) Else (Goto Sub_Menu)
If Not defined %User% Goto Sub_Menu
If Not Defined %Pass% Goto Sub_Menu

:::::::::::::::::::::::::::::::::::::::::::::::::::::::

:Menu_
cls
echo.
echo Bienvenido %Usuario%
echo.
REM Y AQUI VAN TUS COMANDOS ETC...
Pause
exit



Salu2
"Comentar el código es como limpiar el cuarto de baño; nadie quiere hacerlo, pero el resultado es siempre una experiencia más agradable para uno mismo y sus invitados"

Eleкtro

#2
Advertencia - mientras estabas escribiendo, una nueva respuesta fue publicada. Probablemente desees revisar tu mensaje.




Cita de: MPG.h en 16 Febrero 2012, 17:53 PM
if logc=1

if logc==1

Y para evitar esos errores deberías usar "EQU" en todo el script, En vez de "="

De todas formas has echo un tremendo lio de bat con llamadas innecesarias, Se hace dificil de ver todo.


Aqui tienes mi versión.
A diferencia del code de Geormarsch, Este es más parecido a tu ejemplo, Primero comprueba el nombre de usuario y si es correcto no lo vuelve a pedir más, He intentado que se parezca al ejemplo de lo que buscas hacer.


Código (dos) [Seleccionar]
@Echo OFF
Title BBCR Beta
Setlocal enabledelayedexpansion

Set User=Elektro
Set Pass=Hacker

:Login
::::::
Cls
Echo+

If /I "%Usuario%:%Password%" EQU "%User%:%Pass%" (Goto :Fin)

If Defined Usuario (
Echo: Ingrese la contrase¤a: | MORE
Set /p Password=^>
If NOT defined Password (Goto :Login)
Call :Check !Password!
) ELSE (
Echo: Ingrese el nombre de usuario: | MORE
Set /p Usuario=^>
If NOT defined usuario (Goto :Login)
Call :Check !Usuario!
)


:Check
::::::
If Defined Password (Set "Var=%Pass%" & Set "Var2=Contrase¤a") ELSE (Set "Var=%User%" & Set "Var2=Usuario")

Echo %*| Findstr /I /R "^%Var%$" >NUL

If %Errorlevel% EQU 0 (
Echo+
Echo: %Var2% aceptado. | MORE
Ping -n 3 localhost >NUL
Goto :Login
) ELSE (
Echo+
Echo: %Var2% denegado. | MORE
If NOT Defined Password (Set Usuario=)
Set Password=
Ping -n 3 localhost >NUL
Goto :Login
)


:Fin
::::
Cls
Echo+
Echo: Fin del programa.
EndLocal
Pause >Nul
Exit



Salu2.








MPG.h

vaya,hay dos o tres comandos que acabo de aprender
todo el programa era un experimento para testear algunas cosillas
estare probando los ejemplos que pusieron
gracias