无法在批处理文件中找到语法错​​误

时间:2016-09-27 23:10:56

标签: windows batch-file cmd

所以我对编码比较新,我似乎无法在我的代码中找到语法错​​误。每次加载菜单,然后按1,它会关闭并闪烁一个快速错误,表示有一个syantax错误。如果你们能帮助我找出引起问题的原因。顺便说一句,这是一个基于文本的RPG。没法官:))

@echo off
TITLE VICTIMQUEST =-= RETRO EDITION
setlocal enabledelayedexpansion

:menu
color 0a
cls
echo.
echo VICTIMQUEST =-= RETRO EDITION
echo.
echo 1) Begin
echo 2) Exit
echo.
set /p c=C:\

if "%c%" == "1" goto new
if "%c%" == "2" exit
goto menu

:new
set health=100
set monsterhealth=30
set playerdmg=7
set monsterdmg=3
goto home

:home
cls
echo You sit in your nice, cozy cabin...
echo ----------------------
echo Nothing you need to worry about.
echo.
echo 1) FIGHT!
echo 2) Quit :|
echo.
set /p c=C:\

if "%c%" == "1" goto encounter1
if "%c%" == "2" goto menu
goto home

:encounter1
cls
echo You: %health%
echo.
echo 1) Attack
echo 2) Run away
echo.
set /p c=C:\

if "!c!" == "1' goto attack1
if "!c!' == "2" goto home
goto encounter1

请帮忙。谢谢!

3 个答案:

答案 0 :(得分:3)

3变化:

  1. REM @echo off - 当您正在调试时,Echo应该打开,或者您是盲目的
  2. 竖线字符|是一个特殊字符,必须使用^进行转义。

    echo 2) Quit :^|
    
  3. 引号不正确。需要双引号。

    if "!c!" == "1" goto attack1 
    

答案 1 :(得分:1)

我应该警告你,计算机在标点符号时非常挑剔。

"!c!" == "1'"!c!' == "2"之类的内容永远不会奏效。

|字符具有特殊含义,因此除非您使用^将其转义或将其与其他内容一起放在双引号中,否则无法使用它。

答案 2 :(得分:1)

添加

pause >nul

到批处理文件的末尾。这将使批处理文件在用户按下某个键之前不会关闭。