[ suadhm @ 26.12.2012. 09:57 ] @

Imam bat skriptu sa meniem koji ima više od 9 opcija. Sve radi ok ako izaberem bilo koju opciju od 1 do 9.
Ali ako probam bilo koju opciju od 10 pa nadalje skripta kao da to ne vidi i uvijek pokreće prvu opciju...

Ima li ko ideju kako da napravim da ovo radi.
[ rajco @ 26.12.2012. 10:48 ] @
Daj nam skript i reci šta bi želeo da radi kad se unese nepostojeća opcija, pa ćemo videti.
[ suadhm @ 26.12.2012. 11:03 ] @
To je samo dio skripte, i on ide ovako:

1. Potrebno je da korisnik unese neki broj između 1 i 17:

set c1=
set /p c1=
echo.

2. Na osnovu unešenog broja skripta treba da "skoči" na odgovarajući label:

if '%c1%'=='1' goto SU1
if '%c1%'=='2' goto SU2
if '%c1%'=='3' goto SU3
if '%c1%'=='4' goto SU4
if '%c1%'=='5' goto SU5
if '%c1%'=='6' goto SU6
if '%c1%'=='7' goto SU7
if '%c1%'=='8' goto SU8
if '%c1%'=='9' goto SU9
if '%c1%'=='10' goto SU10
if '%c1%'=='11' goto SU11
if '%c1%'=='12' goto SU12
if '%c1%'=='13' goto SU13
if '%c1%'=='14' goto SU14
if '%c1%'=='15' goto SU15
if '%c1%'=='16' goto SU16
if '%c1%'=='17' goto SU17


Ovo sve radi OK kada se odabere bilo koji broj od 1 do 9, ali kada se odabere bilo koji broj između 10 i 17 skripta "skače" na label SU1.

Nadam se da je sad jasnije šta mi je problem.

[ Predrag Supurovic @ 26.12.2012. 12:01 ] @
Koliko se sećam, za veći broj parametara postoji mogućnost šiftovanja parametara.
[ suadhm @ 26.12.2012. 12:08 ] @

Kako se to radi?

Što je čudno kada napravim novu skriptu u kojoj se nalazi samo ovaj dio:

@echo off
set c1=
set /p c1=
echo.

if '%c1%'=='1' goto SU1
if '%c1%'=='2' goto SU2
if '%c1%'=='3' goto SU3
if '%c1%'=='4' goto SU4
if '%c1%'=='5' goto SU5
if '%c1%'=='6' goto SU1
if '%c1%'=='7' goto SU2
if '%c1%'=='8' goto SU3
if '%c1%'=='9' goto SU4
if '%c1%'=='10' goto SU10
if '%c1%'=='11' goto SU11
if '%c1%'=='12' goto SU12
if '%c1%'=='13' goto SU13
if '%c1%'=='14' goto SU14
if '%c1%'=='15' goto SU15
if '%c1%'=='16' goto SU16
if '%c1%'=='17' goto SU17

:SU1
echo 1
pause
exit

:SU2
echo 2
pause
exit

:SU3
echo 3
pause
exit

:SU4
echo 4
pause
exit

:SU5
echo 5
pause
exit

:SU10
echo 10
pause
exit

:SU11
echo 11
pause
exit

:SU12
echo 12
pause
exit

:SU13
echo 13
pause
exit

Sve raddi kako treba?????!!!!

[ bachi @ 26.12.2012. 12:48 ] @
Ovako to kod mene izgleda za neke moje potrebe i kada se pogreši, opet se vrati na početak izbora, a ne na prvu stavku...

Code:
@echo off
:start
cls
echo Colas 
echo.
echo.
set /p userinp=1=Opcija 1; 2=Opcija 2; 3=Opcija 3; 4=Opcija 4; 5=Opcija 5?; 9=Opcija 6:  
set userinp=%userinp:~0,1%
if "%userinp%"=="1" goto 1
if "%userinp%"=="2" goto 2
if "%userinp%"=="3" goto 3
if "%userinp%"=="4" goto 4
if "%userinp%"=="5" goto 5
if "%userinp%"=="9" goto end

goto start


Tako da pretpostavljam da ti treba da uradiš sledeće: da na početku, pre izbornika staviš recimo liniju :start

a posle opcija staviš liniji
goto start

Na taj način, ako lUser pogreši opciju, vraća se na start i dobije ponovo izbornik.

[ suadhm @ 26.12.2012. 13:59 ] @

Nije problem da User odabere pogrešnu opciju, napravio sam ja da ga upozori da je pogriješio i onda ga vraća na početak.

Problem je što kada se odabere opcija veća od 9 skripta ne radi kako treba.

[ dragancesu @ 27.12.2012. 04:41 ] @
A da probas sa slovima? Ima ih vise nego cifri
[ notebookFun @ 27.12.2012. 09:07 ] @
stavi samo na pocetku

:start i iza poslednje provjere IF ERRORLEVEL 1 goto start

[ Predrag Supurovic @ 27.12.2012. 09:56 ] @
Kad nekog mrzi da gugluje

http://technet.microsoft.com/en-us/library/bb491002.aspx

http://www.robvanderwoude.com/parameters.php



[ suadhm @ 27.12.2012. 10:28 ] @
Otklonio sam problem.
Bila je moja greška

Zaboravio sam da promijenim jedan parametar u kodu i to me je zezalo cijelo vrijeme.

U dijeli koda ispred IF naredbi bilo je:

Code:

if not '%c1%'=='' set c1=%c1:~0,1%


A trebalo je da bude:

Code:

if not '%c1%'=='' set c1=%c1:~0,2%




Ipak hvala na pomoći.


Pozdrav svima.