2016-11-18 1 views
1

Ich erstellte ein Batch-Skript und es war vollständig genug, dass ich es ausführen konnte, so dass ich es geladen und ich bekomme einen Fehler =1 was not expected at this time, aber ich verstehe nicht, was ich falsch mache, ursprünglich hatte ich if armor=1 (do...), aber ich habe den gleichen Fehler beide Male, kann mir jemand sagen, was ich falsch gemacht habe und warum das passiert?Nicht erwartet zu diesem Zeitpunkt Fehler im Batch

:prebattle 
cls 
if armor == 1 (
set php=100 
) 
set /a mlvl=%random% %% 5 + 1 

if weapon=1 (
set pdmg=%random% %% 20 + 1 
) 
if !lvl! geq 1 if !lvl! leq 5 (
set enemyno=%random% %% 3 + 1 
set mdmg=%random% %% 20 + 1 
) 
if !lvl! geq 6 if !lvl! leq 10 (
set enemyno=%random% %% 5 + 1 
set mdmg=%random% %% 50 + 1 
) 
if !lvl! geq 11 if !lvl! leq 15 (
set enemyno=%random% %% 9 + 1 
set mdmg=%random% %% 100 + 1 
) 
if !lvl! geq 21 if !lvl! leq 30 (
set enemyno=%random% %% 15 + 1 
set mdmg=%random% %% 150 + 1 
) 
if !lvl! geq 31 if !lvl! leq 45 (
set enemyno=%random% %% 20 + 1 
set mdmg=%random% %% 200 + 1 
) 
if !lvl! geq 46 if !lvl! leq 60 (
enemyno=%random% %% 30 + 1 
set mdmg=%random% %% 500 + 1 
) 
if enemyno == 1 (
goto enemy1 
) 
if enemyno=2 (
goto enemy2 
) 
if enemyno=3 (
goto enemy3 
) 
if enemyno=4 (
goto enemy4 
) 
if enemyno=5 (
goto enemy5 
) 
if enemyno=6 (
goto enemy6 
) 
if enemyno=7 (
goto enemy7 
) 
if enemyno=8 (
goto enemy8 
) 
if enemyno=9 (
goto enemy9 
) 
if enemyno=10 (
goto enemy10 
) 
if enemyno=11 (
goto enemy11 
) 
if enemyno=12 (
goto enemy12 
) 
if enemyno=13 (
goto enemy13 
) 
if enemyno=14 (
goto enemy14 
) 
if enemyno=15 (
goto enemy15 
) 
if enemyno=16 (
goto enemy16 
) 
if enemyno=17 (
goto enemy17 
) 
if enemyno=18 (
goto enemy18 
) 
if enemyno=19 (
goto enemy19 
) 
if enemyno=20 (
goto enemy20 
) 
if enemyno=21 (
goto enemy21 
) 
if enemyno=22 (
goto enemy22 
) 
if enemyno=23 (
goto enemy23 
) 
if enemyno=24 (
goto enemy24 
) 
if enemyno=25 (
goto enemy25 
) 
if enemyno=26 (
goto enemy26 
) 
if enemyno=27 (
goto enemy27 
) 
if enemyno=28 (
goto enemy28 
) 
if enemyno=29 (
goto enemy29 
) 
if enemyno=30 (
goto enemy30 
) 
goto prebattle 
+0

'wenn Rüstung == 1 'Dies ist ein String-Vergleich. Sie vergleichen nicht den Wert der variablen Rüstung. 'if weapon = 1' Die Hilfe zum' IF' Befehl sagt zwei '=' für den String Vergleich zu verwenden. Und wieder vergleichen Sie Waffe mit 1 und nicht den Wert der Variablen. – Squashman

+0

@Squashman Ich habe bereits die variable Rüstung auf 1 weiter oben gesetzt, also ist es nicht – Yoshirou

+0

Ugh! Sie verwenden die Variable nicht. Um auf eine Variable zu verweisen, müssen Sie Prozentzeichen verwenden. '% rüstung%' – Squashman

Antwort

0

Sie vergleichen in einer if-Anweisung, so dass Sie zwei gleiche Zeichen benötigen oder EQU verwenden.

wenn Waffe == 1 (zur label)

wenn Waffe EQU 1 (zur Label)

+1

Ich habe das bereits in meinen Kommentaren erwähnt und Ihr Code ist immer noch falsch, weil die Variable nicht auf den Wert erweitert wird. Sie müssen Prozentzeichen verwenden, um die Variable auf ihren Wert zu erweitern. – Squashman

+0

Danke Mann! wirklich zu schätzen :) – Yoshirou

+0

@Squashman Das ist unhöflich XD – Yoshirou

2

Diese sind die beiden größten Fehler:

Mit enemyno statt% enemyno%. Sie verwenden die Nicht-Prozent-Version nur beim Setzen von Variablen.

Ihre Gleichung benötigt zwei == oder EQU, damit es funktioniert. Ihr festgelegter Befehl sollte wie folgt aussehen:

if %enemyno%==7 goto enemy7 

Ich verwende nicht die(), weil es nicht immer benötigt wird.

Ich sehe auch, dass Sie verwenden

set enemyno=%random% %% 30 + 1 

, die benötigt/a zu arbeiten, sonst wird es als String nehmen. (/ A macht es als Zahlen speichern.) Es wird wie folgt aussehen:

set /a enemyno=%random% %%30 +1 
+0

Vielen Dank! Ich bin relativ neu im Batch Scripting, danke für die Erklärung :) – Yoshirou

Verwandte Themen