If statement 批处理-命令提示符的用户输入(如果语句发出)

If statement 批处理-命令提示符的用户输入(如果语句发出),if-statement,batch-file,command,user-input,command-prompt,If Statement,Batch File,Command,User Input,Command Prompt,我目前正在创建一个更大的批处理文件的一段,该文件需要让用户与命令提示符交互,但我似乎对IF语句有问题 以下代码是我一直在尝试的: :ONE2 cls echo Free Roam is used like command prompt, but with additional commands. echo Type FRHELP for a list of additional commands. :COMMANDLOOP echo. set /P TEMPCMD=%CD% : IF %T

我目前正在创建一个更大的批处理文件的一段,该文件需要让用户与命令提示符交互,但我似乎对IF语句有问题

以下代码是我一直在尝试的:

:ONE2
cls
echo Free Roam is used like command prompt, but with additional commands.
echo Type FRHELP for a list of additional commands.

:COMMANDLOOP
echo.
set /P TEMPCMD=%CD% : 

IF %TEMPCMD% == QUIT (
GOTO END2

) else if %TEMPCMD% == FRHELP (
GOTO COMMANDSLIST

) else (
%TEMPCMD%
GOTO COMMANDLOOP
)

:COMMANDSLIST
echo.
echo FRHELP = Display Free Roam Commands
echo QUIT   = Leave your current Free Roam Session
GOTO COMMANDLOOP
所发生的是,我可以在不使用IF语句的情况下生成多部分命令(例如:cd..)。但对于IF语句,它只允许我执行单部分命令(例如:dir)

如果我有上面列出的If语句,它将给我“…”是意外的”错误并退出


有没有办法通过这些IF语句将我的TEMPCMD变量传递到命令提示符下,而不出现此错误?

试试这个,它对我有效,没有任何错误:

@echo off &setlocal

:COMMANDLOOP
echo.
set "TEMPCMD=%CD%"
set /P "TEMPCMD=%CD% :" 

IF "%TEMPCMD%"=="QUIT" (GOTO END2
) else (
    if "%TEMPCMD%"=="FRHELP" (
        GOTO COMMANDSLIST
    ) else (
        GOTO COMMANDLOOP
    )
)

pause
:COMMANDSLIST
echo.
echo FRHELP = Display Free Roam Commands
echo QUIT   = Leave your current Free Roam Session
GOTO COMMANDLOOP

我相信我解决了我自己的问题,如果我在if语句中的变量上加上引号,它似乎会起作用:if“%TEMPCMD%”==“QUIT”(GOTO END2)