将“+”符号与用户使用批处理文件中的if语句输入的变量进行比较

时间:2017-12-19 08:56:43

标签: batch-file variables if-statement symbols

我的批处理文件有些问题。该文件应接受来自用户的2个数字的输入,然后接受符号的输入。之后比较用户输入带有“+”号的符号,但它不起作用。

也许你可以从我的代码中更好地理解:

echo please enter first number
set /p number0=

echo please enter second number
set /p number1=

echo enter one of the numbers - ^+ - / ^*
set /p symbol="set the variable: "

echo %symbol%
set plus=+
echo %plus%
pause

if /i "%symbol%" EQU "+"(
    echo your choice is to sum up the numbers
    pause
    set /a answ = %number0% + %number1%
    echo answer:
    echo %answ%
)

我已经尝试过使用if /i %symbol% == plus,尝试使用我能想象的任意组合的引号。我试图像这样set /p plus="+"分配运算符和变量,然后在符号变量周围使用“”,依此类推。

但是在我到达变量应该与符号+进行比较的部分后,我的批处理文件只会崩溃。所有变量都已正确分配。

如果有必要,这是查看完整档案的链接,但请注意,完整档案不是用英语写的:https://1drv.ms/u/s!Ap4-t2P-Igzihb5shQZLNkKySEWOrQ

2 个答案:

答案 0 :(得分:1)

我找到了一种在没有if #available(iOS 9.0, *) { UILabel.appearance(whenContainedInInstancesOf: [UIAlertController.self]).numberOfLines = 0 } else { // Fallback on earlier versions } 语句的情况下做同样事情的方法。事实证明我可以这样做:

if

答案 1 :(得分:1)

我建议使用此代码:

@echo off
setlocal EnableExtensions EnableDelayedExpansion
set Number1=
set /P "Number1=First number:   "
set Number2=
set /P "Number2=Second number:  "

:EnterOperator
set Operator=
set /P "Operator=Math. operator: "
if not defined Operator goto EnterOperator
if "!Operator!" == "+" goto EvaluateExpression
if "!Operator!" == "-" goto EvaluateExpression
if "!Operator!" == "*" goto EvaluateExpression
if "!Operator!" == "/" goto EvaluateExpression
goto EnterOperator

:EvaluateExpression
set /A Result=Number1 %Operator% Number2
echo The result is:  %Result%
endlocal

在运行命令提示符窗口set /?时,请仔细阅读有关算术表达式的帮助输出。在算术表达式中仅使用环境变量名称Number1Number2时,用户输入的字符串也可以是整数或不是整数,在这种情况下,Windows命令解释程序将替换在评估算术表达式时,不存在环境变量或值0的无效字符串。

在评估算术表达式之前,必须使用延迟环境变量扩展来评估算术符号运算符,否则Windows命令解释器可能会因为操作符无效而输出错误消息,或者根据用户在提示符上输入的内容完成不同的操作为运营商。

请注意,此代码仍可以除以零。

请参阅Use IF statement on variables with unacceptable symbols (e.g. / or :)上的答案,了解在执行此命令行之前使用算术表达式和扩展之前比较运算符字符串时使用延迟环境变量表达式的原因。另请参阅Why is no string output with 'echo %var%' after using 'set var = text' on command line?,其中包含有关 SET 语法的一般信息。

要了解使用的命令及其工作原理,请打开命令提示符窗口,执行以下命令,并完全阅读为每个命令显示的所有帮助页面。

  • echo /?
  • endlocal /?
  • goto /?
  • if /?
  • set /?
  • setlocal /?