2013-05-10 1 views
3

3 개의 변수가 모두 같은 시간에 동일한 지 확인해야하는 배치 파일을 작성했습니다. 그것은 슬프게도 작동하지 않았다Windows 배치 파일에서 A와 B와 C가 1 인 경우 수행 방법?

if %A% AND %B% AND %C% EQU 1 goto YES 

: 나는 일 것이라고 생각 무엇

이 있었다. 내 파일에서이 사용 :

:init 
set A=0 
set B=0 
set C=0 

Then if가 전달되면 변수 A와 B가 1로 설정됩니다.

if %A% and %B% and %C% EQU 1 (
    goto YES 
) ELSE (
    goto NO 
) 

그런 다음이 파일은 계속 진행되며이 질문에 필요하지 않은 다른 작업을 수행합니다.

조만간 답변하십시오. 고맙습니다.

답변

1

@echo off &setlocal 
:init 
set A=0 
set B=0 
set C=0 

if %A% equ %B% if %B% equ %C% (goto:yes) else goto:no 
+0

엔도로와 존 감사합니다. 정말 감사. –

2

은 단순히 IF를을 체인 :

IF %A% EQU 1 IF %B% EQU 1 IF %C% EQU 1 goto YES 

당신은 "다른"지점의 기능을합니다 (또는 원래의 코드와 같이 IF/ELSE을 할 수있는 직선 GOTO NO와이를 따를 수, 그것의 선호도의 문제). 명령 확장하지 않고도 작동합니다

IF "%A%"=="1" IF "%B%"=="1" IF "%C%"=="1" GOTO YES 
GOTO NO 

로 위를 기록

참고가 활성화된다.

1- 변수에 대한 가능한 값은 단지 0과 1 인 경우에, 해당 숫자 부울위한 동작 AND 연산자 승산이다

+0

빠른 질문, 나는 IF var에 EQU 번호 ( 고토 네 ) ELSE ( 고토 없음 ) 를 사용할 수 있습니까? –

+0

@ Burn_E99 : 명령 확장이 활성화되어 있으면 yes입니다. – Jon

+0

@downvoter : 의견을 남겨 주시면이 답변을 개선하는 데 도움을 주시기 바랍니다. 감사. – Jon

1

여기 가지 옵션을 시도 :

set /A result=A * B * C 
if %result% EQU 1 (
    goto YES 
) else (
    goto NO 
) 

2 - 당신은 당신이 부울 AND OPE를 조립하는 목적으로 두 개 이상의 IF 년대를 내포하고 있다는 사실을 명확하게 할 수있다 rater 이런 식으로 :

set AND=IF 
if %A% equ 1 %AND% %B% equ 1 %AND% %C% equ 1 goto YES 
goto NO 
0

슬프게도, 대답은 받아 들여지는 질문에 완전히 대답하지 않습니다. 적용된 테스트에서 보듯이 A = B = C 일 경우 YES로, A = B = C = 임의 일 경우 (예 : 0처럼) 수행합니다. 질문은 A = B = C = 1인데, 이는 추가 테스트가 필요합니다.

if %A%%B%%C%==111 goto yes 

하지만 그 해당 가정

A, B 및 C에 할당 될 수있는 값에는 어떤 아주에 따라, A가 = B = C = 1 (지정) 매우 용이하게 테스트 할 수있다 예를 들어 A = 1, B가 정의되지 않았고 C = 11 일 가능성은 없습니다.

관련 문제