Archivo por lotes: prueba de cadena de variable de entorno "if"

Archivo por lotes: prueba de cadena de variable de entorno "if"

En un archivo por lotes, estoy llamando a otro archivo por lotes para establecer una serie de variables de entorno de fecha.

Las variables de datos están configuradas correctamente y puedo llamarlas.

Sin embargo, en este caso, necesito comparar dos de estas variables de entorno y determinar si son iguales para poder iniciar condicionalmente el resto del lote (o saltar hasta finalizar/salir).

Sin embargo, parece que no puedo obtener el condicional para ejecutar la prueba (comparación) de las dos variables de entorno.

Estos se definen como %today2% (la fecha de hoy establecida como MMDDAA) y %firstmonday%, que es el primer lunes calculado del mes y establecido como MMAADD). Cuando se ejecutan hoy (14 de octubre de 2015), devuelven 101415 y 110215.

Luego intento probarlos de la siguiente manera:

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

Sin embargo, la prueba parece ignorarse por completo: la prueba siempre continúa con GO independientemente.

Si yo echo %today%y %firstmonday%ellos somos, por supuesto, diferentes, pero de alguna manera la prueba se evalúa como verdadera y se ejecuta.

Si no me explico claramente, hágamelo saber e intentaré hacerlo mejor. Soy más bien un novato en lo que respecta a esto, pero he estado jugando con ello por un tiempo y parece que no puedo entender el error lógico.

Respuesta1

He creado dos archivos por lotes: b1.cmdy b2.cmdlos siguientes. Primero, b2.cmdque establece sus variables como se describe:

set today2=101415
set firstmonday=110215

Entonces, b1.cmdque funciona como se desea:

@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

información relacionada