Ayuda. Contaseña en batch

Iniciado por Lockup, 2 Julio 2011, 02:03 AM

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

Lockup

Yo de nuevo  :-[

Pues he estado tratando de crear un batch que te permita crear una contraseña (opcional) para acceder posteriormente al batch

de encabezado tengo @echo off
if not exist C:\others\cook\passcript (goto :menu)
if exist C:\others\cook\passcript (goto :entrar)

de manera que si no existe la ruta entre normal al batch pero en el menu del batch les doy la opción de crear contraseña y para eso tengo lo siguiente

:create
MD C:\others\cook\passcript
set /p pass=Escribe tu clave:
cd C:\others\cook\passcript
echo title Password > pass.bat
echo %pass% >> pass.bat
echo Password Creado Satisfactoriamente
pause
goto entrar

Efectivamente me la crea y hasta aqui todo va bien xd..

Despues esto me lleva a donde me piden la contraseña para poder entrar
:entrar
set /p password=Ingresa tu clave:
call C:\others\cool\passcript\pass.bat
if %password%==%pass% (goto :menu) else cls & goto fail

Cuando escribo la contraseña que he creado... entra y todo perfecto, pero cuando cierro el batch y lo ejecuto otra vez... y escribo la contraseña correcta no entra y se cierra...

No tengo mucho conocimiento sobre que podria hacer en este caso..

Ayuda! D: xd

Gracias!!  ;D

SuperDraco

#1
hola, haz el favor de pegar el código entero para buscar el error.

saludos

EDITO: pero bueno, los errores saltan a la vista

echo title(=)Password>"C:\others\cook\passcript\pass.bat"

call C:\others\cool(COOK)\passcript\pass.bat

Goto ( : )fail

La última no tiene mucha importancia, pero... Al menos repasa tu código y corrije los pequeños errores como esos.

De todas formas, esas dos líneas sobretodo la del Call borrala, eso no tiene sentido... El password no se va a reconocer como un comando en el pass.bat, y dará error.

Podrías usar:


Código (dos) [Seleccionar]
:entrar
set /p password=Ingresa tu clave:

Type "C:\others\cook\passcript\pass.bat" | findstr "^%password%$" >nul
If %errorlevel% EQU 0 (
goto :menu
) ELSE (
cls
       Goto :fail
)


Sin ver el código entero, no puedo aventurarme más.
saludos
No he vuelto, solo estoy de paso.

Lockup

el codigo completo o lo que llevo de el (porque me pare al ver que no funcionaba..) @echo off
if not exist C:\others\cook\passcript (goto :menu)
if exist C:\others\cook\passcript (goto :entrar)


:entrar
set /p password=Ingresa tu clave:

Type "C:\others\cook\passcript\pass.bat" | findstr "^%password%$" >nul
If %errorlevel% EQU 0 (
goto :menu
) ELSE (
cls
        Goto :fail
)

:menu
echo Elija la unidad donde se encuentra el archivo
echo 1. C:\           2. D:\
echo 3. F:\            4. J:\
echo 5. Crear Clave   6. Salir
set /p var=Escribe el numero de la unidad correspondiente

if %var%==1 (goto :c)
if %var%==2 (goto :d)
if %var%==3 (goto :f)
if %var%==4 (goto :j)
if %var%==5 (goto :crear)


:crear
set /p var=Desea crear una clave: (S/N)

if %var%==s (goto :create)
if %var%==n (goto :menu) else goto menu

:create
MD C:\others\cook\passcript
set /p pass=Escribe tu clave:
cls
cd C:\others\cook\passcript
echo title=Password > pass.bat
echo %pass% >> pass.bat
echo Password Creado Satisfactoriamente
pause
goto entrar


:fail
echo Contraseña incorrecta, intente de nuevo porfavor.
pause
goto :entrar


Hice el cambio que me dijiste, borre call y puse lo que aconsejaste pero ahi si que ni reconoce el password
:entrar
set /p password=Ingresa tu clave:

Type "C:\others\cook\passcript\pass.bat" | findstr "^%password%$" >nul
If %errorlevel% EQU 0 (
goto :menu
) ELSE (
cls
        Goto :fail
)


Pero usando el que tenia antes (sin el call)
if %password%==%pass% (goto :menu) else goto :fail
pero solo sirve por una vez..

Tambien elimine lo de Title.. no vea importancia.. o si (?)

Saludos,  ;)

SuperDraco

Cita de: Lockup en  2 Julio 2011, 05:19 AM

Hice el cambio que me dijiste, borre call y puse lo que aconsejaste pero ahi si que ni reconoce el password

Te falla por esto:

echo %pass% >> pass.bat

Los espacios cuentan como caracteres, entonces, se copia la contraseña + 1 espacio al pass.bat, por eso no funciona de la forma que te dije, tienes que escribir la contraseña y un espacio, pero bueno eso se arregla así de fácil:

echo %pass%>>pass.bat

(A esos pequeños errores me refería, repasate mejor tus próximos bats  :P)


Cita de: Lockup en  2 Julio 2011, 05:19 AM
Tambien elimine lo de Title.. no vea importancia.. o si (?)

No se si sabes el funcionamiento de CALL, y yo no lo se explicar bien  :xD, bueno de todas maneras lo de title te lo dije para ahorrarte líneas innecesarias, pero el call no te iba a funcionar con ese pass.bat, daría un error parecido a esto:

"contraseña" no se reconoce como un comando interno o externo, programa o archivo por lotes ejecutable.

He probado el code y me ha funcionado bien, solo tienes que quitarle los espacios a la línea que te dije.

Saludos!
No he vuelto, solo estoy de paso.

Lockup

#4
Tenias razón Si funciona... Gracias  :-* :xD

Aun soy algo ignorante en esto...  :xD

Y pues si, repasaré los proximos bats.. soy algo impaciente y cuando veo que no me funciona me canso de revisar y revisar >.<

Pero, en fin.. Gracias  ;D

echo %pass% >> pass.bat

no me habia dado cuenta.. eso fue lo que lo solucuiono :)