【问题标题】:Batch - User Input to Command Prompt (IF statement issue)批处理 - 命令提示符的用户输入(IF 语句问题)
【发布时间】:2013-06-14 15:46:54
【问题描述】:

我目前正在创建一个较大的批处理文件的一部分,需要让用户与命令提示符交互,但我似乎遇到了 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 语句,它只允许我制作单部分命令(EG:dir)。

如果我有上面列出的 IF 语句,它会给我“'..' was unexpected”错误并退出。

有什么方法可以使用这些 IF 语句将我的 TEMPCMD 变量传递到命令提示符而不出现此错误?

【问题讨论】:

  • 我相信我解决了自己的问题,如果我在 IF 语句中的变量上加上引号,它似乎可以工作:IF "%TEMPCMD%" == "QUIT" (GOTO END2)跨度>

标签: if-statement batch-file command user-input command-prompt


【解决方案1】:

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

@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

【讨论】:

    猜你喜欢
    • 2017-08-09
    • 2021-06-23
    • 1970-01-01
    • 2021-06-14
    • 1970-01-01
    • 1970-01-01
    • 2014-11-21
    • 2022-01-11
    • 2022-01-03
    相关资源
    最近更新 更多