Пакетный файл: переменная окружения «if» строка теста

Пакетный файл: переменная окружения «if» строка теста

В пакетном файле я вызываю другой пакетный файл, чтобы задать ряд переменных среды даты.

Переменные данных установлены правильно, и я могу их вызвать.

Однако в данном случае мне необходимо сравнить две из этих переменных среды и определить, являются ли они одинаковыми, чтобы условно запустить оставшуюся часть пакета (или перейти к концу/выйти).

Однако мне не удаётся заставить условие выполнить проверку (сравнение) двух переменных окружения.

Они определяются как %today2% (сегодняшняя дата установлена ​​как ММДДГГ) и %firstmonday%, который является вычисленным первым понедельником месяца и установлен как ММГГДД). При запуске сегодня (14 октября 2015 г.) они возвращают 101415 и 110215.

Затем я попытаюсь проверить их следующим образом:

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

Однако тест, похоже, полностью игнорируется — тест всегда переходит к GO независимо от этого.

Конечно, если I echo %today%и %firstmonday%Ot различаются, но каким-то образом тест оценивается как истинный и выполняется.

Если я неясно изъясняюсь, пожалуйста, дайте мне знать, и я постараюсь сделать это лучше. Я в этом деле новичок, но некоторое время возился с этим и, похоже, не могу понять логическую ошибку.

решение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

Связанный контент