Stránka 1 z 1

Problém s errorlevel v batch (Zobrazuje to co nemá)

Napsal: 16 zář 2015 10:02
od strangereu
Čau, mám problém v batch souboru...
Udělal jsem si tam choice a když vyberu 1 tak se ukáže login input, ale i když vyberu cokoliv jiného tak se pořád ukáže ten login input jako by byla odpověď pořád 1 i když je ve skutečnosti třeba 4 nebo 2 nebo cokoliv jiného...

Kód:

Kód: Vybrat vše

@echo off
color 0b
title Console

set password_out=admin

echo -----------------------------
echo Please select an action to do
echo -----------------------------
echo [1] - Login
echo [2] - Settings
echo [3] - About
echo [4] - Exit
choice /C 1234 /N
if errorlevel 1 goto login
if errorlevel 2 goto settings
if errorlevel 3 goto about
if errorlevel 4 exit

:login
set /p password_in="System password: "
if %password_in%==%password_out% (
   goto success
) else (
   goto err
)

:settings
echo Settings...
pause > nul:

:about
echo About...
pause > nul:

:err
cls
echo Incorrect password...
echo Would you like to try it again?
echo [1] - Yes
echo [2] - No (Close the program)
choice /C 12 /N
if errorlevel 1 goto login
if errorlevel 2 exit

:success
cls
echo Logged in...
pause > nul:


img1001.png
img1001.png (5.86 KiB) Zobrazeno 451 x

Re: Problém s errorlevel v batch (Zobrazuje to co nemá)

Napsal: 16 zář 2015 11:07
od Uziv00
Zkus to přehodit.
Tedy if errorlevel 4, 3, 2, 1 (sestupně).

Re: Problém s errorlevel v batch (Zobrazuje to co nemá)

Napsal: 16 zář 2015 16:52
od zeus
Spravne, errorlevel prochazi, pokud je roven nebo vyssi.

Re: Problém s errorlevel v batch (Zobrazuje to co nemá)

Napsal: 16 zář 2015 19:02
od faraon

Re: Problém s errorlevel v batch (Zobrazuje to co nemá)

Napsal: 17 zář 2015 09:13
od strangereu
A ještě bych se chtěl zeptat, není náhodou nějaký lepší způsob místo goto?
Příjde mi trošku divné všude psát goto něco a pak :něco blablabla...

A jinak díky, funguje to :)

Re: Problém s errorlevel v batch (Zobrazuje to co nemá)

Napsal: 17 zář 2015 09:28
od Oxxid
Powershell

Re: Problém s errorlevel v batch (Zobrazuje to co nemá)

Napsal: 17 zář 2015 18:13
od Uziv00
VBScript

Re: Problém s errorlevel v batch (Zobrazuje to co nemá)

Napsal: 17 zář 2015 18:36
od faraon
strangereu píše:A ještě bych se chtěl zeptat, není náhodou nějaký lepší způsob místo goto?

Určitě je, vyzkoušej si linuxový bash, a poznáš skutečnou moc příkazového řádku :lol:

Ale když používáš desítky let zastaralou vykopávku, budeš se muset spokojit s desítky let zastaralými metodami. Nebo se je naučit opravdu efektivně používat, každou úlohu nejdřív analyzovat a rozkreslit ve vývojových diagramech, a potom teprve převést do kódu. Potom zjistíš že GOTO je ten nejvýkonnější způsob větvení, nejen v ComManDu, ale v jakémkoliv programovacím jazyce. A také ten nejnáročnější, správně používat ho umí jenom opravdoví mistři.