배치 파일: 환경 변수 "if" 문자열 테스트

배치 파일: 환경 변수 "if" 문자열 테스트

배치 파일에서 여러 날짜 환경 변수를 설정하기 위해 다른 배치 파일을 호출합니다.

데이터 변수가 올바르게 설정되었으며 호출할 수 있습니다.

그러나 이 경우 나머지 배치를 조건부로 시작(또는 종료/종료로 건너뛰기)하려면 이러한 환경 변수 중 두 개를 비교하고 동일한지 확인해야 합니다.

그런데 두 환경변수의 테스트(비교)를 실행하기 위한 조건을 얻을 수 없는 것 같습니다.

이는 %today2%(오늘 날짜는 MMDDYY로 설정됨) 및 %firstmonday%(월의 첫 번째 월요일로 계산되고 MMYYDD로 설정됨)로 정의됩니다. 오늘(2015년 10월 14일) 실행하면 101415 및 110215가 반환됩니다.

그런 다음 다음과 같은 방법으로 이를 테스트하려고 합니다.

if %today2%==%firstmonday% goto GO else END

그러나 테스트는 완전히 무시된 것 같습니다. 테스트는 항상 GO로 진행됩니다.

나와 그것들 echo %today%%firstmonday%물론 다르지만 어떻게든 테스트가 true로 평가되어 실행됩니다.

제가 명확하게 설명하지 못하는 경우 알려주시면 더 잘 설명하도록 노력하겠습니다. 나는 이것에 관해서는 초보자이지만 한동안 이것저것 다루어 봤고 논리적 결함을 알아낼 수 없는 것 같습니다.

답변1

나는 두 개의 배치 파일을 만들었습니다: b1.cmd그리고 b2.cmd그 파일은 다음과 같습니다. 먼저 b2.cmd설명된 대로 변수를 설정합니다.

set today2=101415
set firstmonday=110215

그런 다음 b1.cmd원하는 대로 수행됩니다.

@echo off
call b2.cmd
echo today=%today2%
echo firstmonday=%firstmonday%
if "%today2%"=="%firstmonday%" (
    goto go
) else (
    goto end
)
:go
echo at go
goto :EOF
:end
echo at end

관련 정보