Arquivo em lote: teste de string da variável de ambiente "if"

Arquivo em lote: teste de string da variável de ambiente "if"

Em um arquivo em lote, estou chamando outro arquivo em lote para definir uma série de variáveis ​​de ambiente de data.

As variáveis ​​de dados estão definidas corretamente e posso chamá-las.

No entanto, neste caso, preciso comparar duas dessas variáveis ​​de ambiente e determinar se elas são iguais para iniciar condicionalmente o restante do lote (ou pular para finalizar/sair).

Porém, não consigo obter a condicional para executar o teste (comparação) das duas variáveis ​​de ambiente.

Eles são definidos como %today2% (data de hoje definida como MMDDAA) e %firstmonday%, que é a primeira segunda-feira calculada do mês e definida como MMAAAA). Quando executados hoje (14 de outubro de 2015), eles retornam 101415 e 110215.

Estou então tentando testá-los da seguinte maneira:

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

No entanto, o teste parece ser completamente ignorado – o teste sempre prossegue para GO independentemente.

Se eu echo %today%e %firstmonday%eles somos diferentes, é claro, mas de alguma forma o teste é avaliado como verdadeiro e executado.

Se não estiver me explicando claramente, por favor me avise e tentarei fazer um trabalho melhor. Sou bastante novato quando se trata disso, mas já mexi nisso por um tempo e não consigo descobrir a falha lógica.

Responder1

Criei dois arquivos em lote: b1.cmde b2.cmdos seguintes. Primeiro, b2.cmdque define suas variáveis ​​conforme descrito:

set today2=101415
set firstmonday=110215

Então, b1.cmdo que funciona conforme desejado:

@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

informação relacionada