user2849211
user2849211

Reputation:

Inputting space in prompts crash batch file

I am trying to do a command line replica compeletely out of boredom and I have an issue. Here is my code:

@echo off
set /a secret=1
color B
title Subnet Access v1.0
echo   ____________________________________________________________
echo  /                                                            I
echo I                     Subnet Access v1.0                      I
echo I____________________________________________________________/
echo.
echo.
timeout 3 > NUL
echo sys rev init
timeout 1 >NUL
echo loading keyframes
echo please wait
timeout 5 >NUL
echo. 
echo. 
echo Checking for alerts
timeout 6 >NUL
echo alert 0-21-77
timeout 1 >NUL
echo. 
set /p pid=enter pid: || set pid=empty

IF "%pid%"=="1123321231" (
    echo.
    set /a "secret+=1"
    cls
    echo Secrets %secret%/10 found.
    timeout 3 >NUL
    cls
    echo.
    echo pid confirmed
    timeout 1 >NUL
    echo checking with server...
    timeout 5 >NUL
    cls
    color C
    echo COULD NOT IDENTIFY
    timeout 1 >NUL
    cls
    echo.
    timeout 1 >NUL
    cls
    echo COULD NOT IDENTIFY
    timeout 1 >NUL
    cls
    echo.
    timeout 1 >NUL
    cls
    echo COULD NOT IDENTIFY
    timeout 1 >NUL
    cls
    echo.
    timeout 1 >NUL
    goto :unidentify
    )
IF NOT "%pid%"=="1123321231" GOTO :unidentify
:unidentify
cls
echo. 
echo unauthorized access
timeout 3 >NUL
echo level drop
timeout 1 >NUL
echo dropping...
timeout 3 >NUL
echo level now 0
timeout 4 >NUL
echo sys exit
timeout 1 >NUL
cls
cls
set su=0
color 7
title sys/rev/console-override
echo Subnet Console v0.1
echo Made by Murtaugh
echo.
:sub01                                       ::PROBLEM STARTS HERE
IF %su%==0 (
set /p commandMur=sys/dev/: #^> || set commandMur=emptycom
)
IF %su%==1 (
    color B
set /p commandMur=sys/dev/: $^> || set commandMur=emptycom
    )
IF %commandMur%==help (
    ::help segment
    echo.
    echo Help v0.1 Alpha by Murtaugh
    echo.
    echo Commands are listed below:
    echo dir - Lists your directory's contents.
    echo help - Shows this page.
    echo connect - Connects you to an IP address.
    echo.
    goto :sub01
    )
IF "%commandMur%"=="exit" (
    goto :eof
    )
IF "%commandMur%"=="cls" (
    cls
    goto :sub01
    )
IF "%commandMur%"=="su" IF "%su%"=="0" (
    cls
    echo.
    set /a "secret+=1"
    echo Secrets %secret%/10 found.
    set su=1
    goto :sub01
    )
IF "%commandMur%"=="su" IF "%su%"=="1" (
    goto :sub01
    )
IF "%commandMur%"=="emptycom" (
    goto :sub01
    )
IF NOT "%commandMur%"=="exit" IF NOT "%commandMur%"=="help" IF NOT "%commandMur%"=="cls" IF NOT "%commandMur%"=="su" (
    echo "%commandMur%": Bad command or file name
    echo.
    goto :sub01
    ) ::PROBLEM ENDS HERE

But when I input something with spaces it says test==exit was unexpected at this time. and just close. Is there anyway I can fix this? Thanks.

EDIT: Tried "%prompt%"=="test" thing, doesn't work.

Upvotes: 0

Views: 100

Answers (2)

Stephan
Stephan

Reputation: 56180

test==exit was unexpected ... is a typical syntax error with if (set doesn't give this type of error).

Most likely you have a if %command%==exit ...-command the next line. To avoid the syntax error, write if "%command%"=="exit" ...

Upvotes: 1

Mr. D
Mr. D

Reputation: 55

im not really a great programmer, but try adding "QUOTATION TAGS" when you type text with spaces, beacuse batch sometimes get confused about those spaces

Upvotes: 0

Related Questions