Kan iemand mij helpen met Batch? (goto)

Status
Niet open voor verdere reacties.

TomAlverate

Gebruiker
Lid geworden
6 jan 2015
Berichten
5
beste,
Ik ben een vertaalprogramma aan het maken voor school, maar het werkt niet.
Ik vermoed dat het iets is met de goto's maar wat ik ook probeer het werkt niet.
Dit zijn mijn code's:

@echo off
color a
goto main
:main
Set /p werkwoord="Welk werkwoord wil je vervoegen:"
Set werkwoord=%werkwoord%
if "%werkwoord:~-0,2%"=="ar" goto first
if "%werkwoord:~-0,2%"=="er" goto second
if "%werkwoord:~-0,2%"=="ir" goto third

:first
echo %werkwoord:~-0,-2%o
echo %werkwoord:~-0,-2%as
echo %werkwoord:~-0,-2%a
echo %werkwoord:~-0,-2%amos
echo %werkwoord:~-0,-2%ais
echo %werkwoord:~-0,-2%an
goto end


:second
echo %werkwoord:~-0,-2%o
echo %werkwoord:~-0,-2%es
echo %werkwoord:~-0,-2%e
echo %werkwoord:~-0,-2%emos
echo %werkwoord:~-0,-2%eis
echo %werkwoord:~-0,-2%en
goto end

:third
echo %werkwoord:~-0,-2%o
echo %werkwoord:~-0,-2%es
echo %werkwoord:~-0,-2%e
echo %werkwoord:~-0,-2%imos
echo %werkwoord:~-0,-2%is
echo %werkwoord:~-0,-2%en
goto end


:end
Set /p opnieuw="Wil je nog een ander werkwoord vervoegen? (ja of nee):"
Set opnieuw=%opnieuw%
if "%opnieuw:~-0,2%"=="ja" cls & goto main
if "%opnieuw:~-0,2%"=="nee" goto:eof

Alvast bedankt
 
Je zegt er niet bij wat er dan niet werkt. Hou er rekening mee dat je de ja en nee antwoorden wel met kleine letters ingeeft.
 
Het probleem is dat wat ik ook invoer in voor werkwoord, dat er altijd alleen maar het antwoord van het rijtje "first" uitkomt
 
Je mist direct onder de drie If statements een "goto end"
Je controleert nu op de eerste 2 letters van het werkwoord, als dat de laatste 2 moeten zijn moet je het volgende gebruiken:
if "%werkwoord:~-2%"
 
Dat had ik al geprobeerd, maar dan geeft hij de error: Het opgegeven batchlabel kan niet worden gevonden: end
 
Hij werkt bij mij prima nadat ik heb gedaan wat ik zei in #4. Ik heb een kopie gemaakt van de code zoals je deze plaatste en beide genoemde wijzigingen erin aangebracht.
 
Als die bij jou nu wel werkt kan je dan jou code aan mij geven en dan kijk ik of het bij mij werkt, want anders ligt het aan mijn computer
 
Dat is dit:

Code:
@echo off
color a
goto main
:main
Set /p werkwoord="Welk werkwoord wil je vervoegen:"
Set werkwoord=%werkwoord%

if "%werkwoord:~-2%"=="ar" goto first
if "%werkwoord:~-2%"=="er" goto second
if "%werkwoord:~-2%"=="ir" goto third
goto end

:first
echo %werkwoord:~-0,-2%o
echo %werkwoord:~-0,-2%as
echo %werkwoord:~-0,-2%a
echo %werkwoord:~-0,-2%amos
echo %werkwoord:~-0,-2%ais
echo %werkwoord:~-0,-2%an
goto end


:second
echo %werkwoord:~-0,-2%o
echo %werkwoord:~-0,-2%es
echo %werkwoord:~-0,-2%e
echo %werkwoord:~-0,-2%emos
echo %werkwoord:~-0,-2%eis
echo %werkwoord:~-0,-2%en
goto end

:third
echo %werkwoord:~-0,-2%o
echo %werkwoord:~-0,-2%es
echo %werkwoord:~-0,-2%e
echo %werkwoord:~-0,-2%imos
echo %werkwoord:~-0,-2%is
echo %werkwoord:~-0,-2%en
goto end


:end
Set /p opnieuw="Wil je nog een ander werkwoord vervoegen? (ja of nee):"
Set opnieuw=%opnieuw%
if "%opnieuw:~-0,2%"=="ja" cls & goto main
if "%opnieuw:~-0,2%"=="nee" goto:eof

De controle is hierin dus op de laatste 2 letters van het opgegeven woord in plaats van op de eerste 2.
 
Laatst bewerkt:
Bij mij werkt de code nu maar wanneer ik onder iedere if statement een goto end zet dan werkt ie niet goed.

Code:
@echo off
color a
goto main
:main
Set /p werkwoord="Welk werkwoord wil je vervoegen:"
Set werkwoord=%werkwoord%
if "%werkwoord:~-2%"=="ar" goto first
if "%werkwoord:~-2%"=="er" goto second
if "%werkwoord:~-2%"=="ir" goto third

:first
echo %werkwoord:~-0,-2%o
echo %werkwoord:~-0,-2%as
echo %werkwoord:~-0,-2%a
echo %werkwoord:~-0,-2%amos
echo %werkwoord:~-0,-2%ais
echo %werkwoord:~-0,-2%an
goto end

:second
echo %werkwoord:~-0,-2%o
echo %werkwoord:~-0,-2%es
echo %werkwoord:~-0,-2%e
echo %werkwoord:~-0,-2%emos
echo %werkwoord:~-0,-2%eis
echo %werkwoord:~-0,-2%en
goto end

:third
echo %werkwoord:~-0,-2%o
echo %werkwoord:~-0,-2%es
echo %werkwoord:~-0,-2%e
echo %werkwoord:~-0,-2%imos
echo %werkwoord:~-0,-2%is
echo %werkwoord:~-0,-2%en
goto end


:end
Set /p opnieuw="Wil je nog een ander werkwoord vervoegen? (ja of nee):"
Set opnieuw=%opnieuw%
if "%opnieuw:~-0,2%"=="ja" cls & goto main
if "%opnieuw:~-0,2%"=="nee" goto:eof

Groeten Marcel
 
Bij mij werkt de code nu maar wanneer ik onder iedere if statement een goto end zet dan werkt ie niet goed.

Die goto end moet ook alleen onder de laatste if van de eerste 3. Dat is om ervoor te zorgen dat hij naar dat label gaat als er niet aan de eerste 3 condities wordt voldaan.
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan