2017-02-02 3 views
0

Я пишу командный файл прямо сейчас и столкнулся с проблемой. Мне нужно сделать инструкцию «ИЛИ» в инструкции «И» в пакетном скрипте. Вот мой код:«Синтаксис команды (выражение арифма) неверен» во вложенном операторе «IF» в пакете

@echo off 
set /p a="a=" 
set /p b="b=" 
if "%a%" == "5" (
    if "%b%" == "8" (
     set /a "c=%a%*%b%" 
     goto :win 
    ) 
    if "%b%" == "2"(
     set /a "c=%a%+%b%" 
     goto :win 
    ) 
) 
goto :fail 
:win 
echo %c% 
goto :exit 
:fail 
echo U'r not a magician! 
:exit 
pause 

Проблема заключается в том, что он работает только отлично без второго вложенного «IF» выражение, но мне нужна возможность получить оба результата.

ответ

2

Ваш код работает отлично, если вы вставляете SPACE между "2" и (.

Линия, которая является причиной проблемы является:

if "%b%" == "2"(

Чтобы исправить, измените код на:

if "%b%" == "2" (
+0

Большое спасибо! Это сработало. :) – Hexakosioihexekontahexa

1

Теперь, когда вы приняли свой ответ, я бы хотел упомянуть что ваш код кажется OTT, потому что вы уже знаете принятые параметры и что вы собираетесь с ними делать. (Нет необходимости выполнять арифметические операции). Эта структура будет действовать таким же образом:

@Echo Off 
Set/P "a=a=" 
Set/P "b=b=" 
Set "c=" 

If "%a%][%b%"=="5][8" Set "c=40" 
If "%a%][%b%"=="5][2" Set "c=7" 

If Defined c (Echo=%c%) Else (Echo=U'r not a magician!) 

Pause 
Смежные вопросы