Arquivo em lote: variável de ambiente “if” string test

1

Em um arquivo de lote, estou chamando outro arquivo de lote para definir um número de variáveis de ambiente de data.

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

No entanto, neste exemplo, preciso comparar duas dessas variáveis de ambiente e determinar se elas são iguais para ativar condicionalmente o restante do lote (ou pular para o final / saída).

No entanto, não consigo obter a condicional para executar o teste (comparação) das duas variáveis de ambiente.

Estes são definidos como% today2% (data de hoje definida como MMDDYY) e% firstmonday%, que é uma primeira segunda-feira do mês calculada e definida como MMYYDD). Quando executado hoje (14 de outubro de 2015), estes retornam 101415 e 110215.

Estou 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 são naturalmente diferentes, mas de alguma forma o teste é avaliado como verdadeiro e executado.

Se eu não estiver me explicando claramente, por favor me avise e tentarei fazer um trabalho melhor. Sou um novato quando se trata disso, mas não consigo entender a falha lógica.

    
por Keith 14.10.2015 / 22:55

1 resposta

1

Eu criei dois arquivos em lote: b1.cmd e b2.cmd , que seguem. Primeiro, b2.cmd , que define suas variáveis conforme descrito:

set today2=101415
set firstmonday=110215

Então, b1.cmd , que executa como 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
    
por 14.10.2015 / 23:16