Jackery IFA Fireplace

Batch Fehler bei Ausführung von persönlicher Eingabe (J,j,N,n)

Registriert
Jan. 2012
Beiträge
7
Hallo liebe Foren-Mitglieder

Ich habe folgendes Problem:
Wenn ich mein batch ausführe klappt soweit alles...
...jedoch sobald ich zu "Frage II" oder "Frage III" komme und man dort schon ENTER drückt - obwohl man kein Symbol (Buchstabe, Zahl) eingegeben hat - nimmt er das ebenfalls als JA bzw. "J" oder "j"...
bei "Frage I" lädt er die Frage einfach neu, so wie ich dies eig auch will -.-'
die nächsten zwei Fragen (II + III) hab ich gleich geschrieben, nur wieso gehts da plötzlich nicht mehr??

-> HIER MEINE BATCH:


::::::::::::::::::::::::::::::::::::::::::::::::::::
:: ::
:: DO NOT EDIT THIS FILE !! ::
:: BATCH PROGRAMMED FOR A NEW GAME-DEVICE ::
:: COPYRIGHTY BY 'FINO PRODUCTION™' ::
:: ALL RIGHTS RESERVED ::
:: NO WARRANTY OF DAMAGE CAUSED OF THIS BATCH ::
:: ::
::::::::::::::::::::::::::::::::::::::::::::::::::::


@echo off


:::::::::::::
:: FRAGE I ::
:::::::::::::

:Frage1

title Frage I
cls
echo FRAGE I:
echo Ist die "Steam-Konsole" eine gute Idee?
echo [J]a - [N]ein

set /p x=

if '%x%'=='J' goto Yes1
if '%x%'=='j' goto Yes1
if '%x%'=='n' goto Ende
if '%x%'=='N' goto Ende
if '%x%'=='' goto Frage1

goto Frage1


:Yes1

cls
echo Diese Antwort gefällt mir.
echo Weiter zur nächsten Frage.
timeout /t 5
goto Frage2


::::::::::::::
:: FRAGE II ::
::::::::::::::

:Frage2

title Frage II
cls
echo Frage II:
echo Ist eine "Origin-Konsole" eine gute Idee?
echo [J]a - [N]ein

set /p x=

if '%x%'=='J' goto Yes2
if '%x%'=='j' goto Yes2
if '%x%'=='n' goto Ende
if '%x%'=='N' goto Ende
if '%x%'=='' goto Frage2

goto Frage2


:Yes2

cls
echo Diese Antwort gefällt mir.
echo Weiter zur nächsten Frage.
timeout /t 5
goto Frage3


:::::::::::::::
:: FRAGE III ::
:::::::::::::::

:Frage3

title Frage III
cls
echo Frage III:
echo Währe eine Spielekonsole mit beiden Systemen am erfolgreichsten?
echo [J]a - [N]ein

set /p x=

if '%x%'=='J' goto Yes3
if '%x%'=='j' goto Yes3
if '%x%'=='n' goto Ende
if '%x%'=='N' goto Ende
if '%x%'=='' goto Frage3

goto Frage3


:Yes3


cls
echo Uhrzeit: %time% >> %username%_positiv.txt
echo Datum: %date% >> %username%_positiv.txt
echo Sie haben alle Fragen mit [JA] beantwortet. >> %username%_positiv.txt
echo Senden Sie bitte diese Nachricht an "*****@gmail.com". >> %username%_positiv.txt
echo Vielen Dank, Sie haben sich soeben entschieden, dass
echo "Fino Production" eine Spielekonsole auf Computerbasis
echo erfindet.
echo Senden Sie bitte dieses Ergebnis an "*****@gmail.com".
echo Wir wünschen Ihnen noch einen angenehmen Tag.
echo Ihr Fino Production - Team
timeout /t 15
goto Open_p


:::::::::::::::::
:: END OF FILE ::
:::::::::::::::::

:Ende

title Vielen Dank!
cls
echo Uhrzeit: %time% >> %username%_negativ.txt
echo Datum: %date% >> %username%_negativ.txt
echo Sie haben leider nicht alle Fragen mit [JA] beantwortet. >> %username%_negativ.txt
echo Senden Sie bitte diese Nachricht an "******@gmail.com". >> %username%_negativ.txt
echo Vielen Dank für die Hilfe bei diese Umfrage.
echo Senden Sie bitte dieses Ergebnis an "******@gmail.com".
echo Ihr Fino Production - Team
timeout /t 7
goto Open_n


:::::::::::::::::
:: OPEN E-MAIL ::
:::::::::::::::::

:Open_n

if exist { %username%_negativ.txt
start %username%_negativ.txt }
exit


:Open_p

if exist { %username%_positiv.txt
start %username%_positiv.txt }
exit
 
Zuletzt bearbeitet:
Dein Problem ist, dass du bei jeder Frage die gleiche Variable verwendest (x).

Bei der ersten Frage wird Beispielweise "J" angegeben.
Bei der zweiten Frage hat die Variable immer noch den Wert "J", nur wird er nicht angezeigt...
Du kannst dir ja mal nach der ersten Frage, während man wartet, die Variable per echo %x% ausgeben lassen...

Hier deine Batchdatei welche ich ein wenig abgeändert habe:
Code:
::::::::::::::::::::::::::::::::::::::::::::::::::::
:: ::
:: DO NOT EDIT THIS FILE !! ::
:: BATCH PROGRAMMED FOR A NEW GAME-DEVICE ::
:: COPYRIGHTY BY 'FINO PRODUCTION™' ::
:: ALL RIGHTS RESERVED ::
:: NO WARRANTY OF DAMAGE CAUSED OF THIS BATCH ::
:: ::
::::::::::::::::::::::::::::::::::::::::::::::::::::


@echo off


:::::::::::::
:: FRAGE I ::
:::::::::::::

:Frage1

title Frage I
cls
echo FRAGE I:
echo Ist die "Steam-Konsole" eine gute Idee?
echo [J]a - [N]ein

set /p x=

if "%x%" equ "" (goto Frage1)
if "%x%" equ "J" (goto Yes1)
if "%x%" equ "j" (goto Yes1)
if "%x%" equ "n" (goto Ende)
if "%x%" equ "N" (goto Ende)

goto Frage1


:Yes1

cls
echo Diese Antwort gefällt mir.
echo Weiter zur nächsten Frage.
timeout /t 5
goto Frage2


::::::::::::::
:: FRAGE II ::
::::::::::::::

:Frage2

title Frage II
cls
echo Frage II:
echo Ist eine "Origin-Konsole" eine gute Idee?
echo [J]a - [N]ein

set /p y=

if "%y%" equ "" (goto Frage2)
if "%y%" equ "J" (goto Yes2)
if "%y%" equ "j" (goto Yes2)
if "%y%" equ "n" (goto Ende)
if "%y%" equ "N" (goto Ende)

goto Frage2


:Yes2

cls
echo Diese Antwort gefällt mir.
echo Weiter zur nächsten Frage.
timeout /t 5
goto Frage3


:::::::::::::::
:: FRAGE III ::
:::::::::::::::

:Frage3

title Frage III
cls
echo Frage III:
echo Währe eine Spielekonsole mit beiden Systemen am erfolgreichsten?
echo [J]a - [N]ein

set /p z=

if "%z%" equ "" (goto Frage3)
if "%z%" equ "J" (goto Yes3)
if "%z%" equ "j" (goto Yes3)
if "%z%" equ "n" (goto Ende)
if "%z%" equ "N" (goto Ende)

goto Frage3


:Yes3


cls
echo Uhrzeit: %time% >> %username%_positiv.txt
echo Datum: %date% >> %username%_positiv.txt
echo Sie haben alle Fragen mit [JA] beantwortet. >> %username%_positiv.txt
echo Senden Sie bitte diese Nachricht an "fino_production@gmail.com". >> %username%_positiv.txt
echo Vielen Dank, Sie haben sich soeben entschieden, dass
echo "Fino Production" eine Spielekonsole auf Computerbasis
echo erfindet.
echo Senden Sie bitte dieses Ergebnis an "lasse.alexander.fischer@gmail.com".
echo Wir wünschen Ihnen noch einen angenehmen Tag.
echo Ihr Fino Production - Team
timeout /t 15
goto Open_p


:::::::::::::::::
:: END OF FILE ::
:::::::::::::::::

:Ende

title Vielen Dank!
cls
echo Uhrzeit: %time% >> %username%_negativ.txt
echo Datum: %date% >> %username%_negativ.txt
echo Sie haben leider nicht alle Fragen mit [JA] beantwortet. >> %username%_negativ.txt
echo Senden Sie bitte diese Nachricht an "fino_production@gmail.com". >> %username%_negativ.txt
echo Vielen Dank für die Hilfe bei diese Umfrage.
echo Senden Sie bitte dieses Ergebnis an "lasse.alexander.fischer@gmail.com".
echo Ihr Fino Production - Team
timeout /t 7
goto Open_n


:::::::::::::::::
:: OPEN E-MAIL ::
:::::::::::::::::

:Open_n

if exist { %username%_negativ.txt
start %username%_negativ.txt }
exit


:Open_p

if exist { %username%_positiv.txt
start %username%_positiv.txt }
exit
 
Zuletzt bearbeitet:
Fino Production schrieb:
...

:::::::::::::
:: FRAGE I ::
:::::::::::::

:Frage1

title Frage I
cls
echo FRAGE I:
echo Ist die "Steam-Konsole" eine gute Idee?
echo [J]a - [N]ein

set /p x=

if '%x%'=='J' goto Yes1
if '%x%'=='j' goto Yes1
if '%x%'=='n' goto Ende
if '%x%'=='N' goto Ende
if '%x%'=='' goto Frage1
...


Evtl. x danach wieder zurück setzen? x Ist ab da ja ein Wert zugewiesen.
Oder in den anderen Fragen andere Variablen nutzen.
 
Wie erwähnt, weil bei der Auswahl immer wieder x genommen wird (und die Variable mit dem Vorgängerwert gefüttert ist). Vor der nächsten Abfrage einfach auf 0 setzen:

:Frage2
echo [J]a - [N]ein
SET x=0
set /p x=

Noch etwas anderes: Wenn die Auswahl wie folgt hinterlegt wird, dann ist die Groß- und Kleinschreibung der Buchstaben egal:

if /i '%x%'=='J' goto Yes1
if /i '%x%'=='N' goto Ende
 
vielen dank für die antworten ^^
klappt jetz :D hab einfach andere variablen genommen bei den andere fragen :D
Ergänzung ()

joouuuu danke ^^ jetz gemacht :P
 
Code:
::::::::::::::::::::::::::::::::::::::::::::::::::::
:: ::
:: DO NOT EDIT THIS FILE !! ::
:: BATCH PROGRAMMED FOR A NEW GAME-DEVICE ::
:: COPYRIGHTY BY 'FINO PRODUCTION™' ::
:: ALL RIGHTS RESERVED ::
:: NO WARRANTY OF DAMAGE CAUSED OF THIS BATCH ::
:: ::
::::::::::::::::::::::::::::::::::::::::::::::::::::
Ich lach mir einen Ast.
 
Zurück
Oben