2017-02-02 2 views
0

現在、バッチファイルを作成していますが、問題が発生しました。私はバッチスクリプトで "AND"ステートメントで "OR"ステートメントを作成する必要があります。バッチ内のネストされた "IF"ステートメントの "コマンドの構文(arithm expression)が正しくありません"

@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 
関連する問題