Я пишу простой файл .bat, и я столкнулся с каким-то странным поведением. Есть пара мест, где мне нужно сделать простой if/else, но код внутри блоков, похоже, работает некорректно.
Вот простой пример, демонстрирующий ошибку:
@echo off
set MODE=FOOBAR
if "%~1"=="" (
set MODE=all
echo mode: %MODE%
) else (
set MODE=%~1
echo mode: %MODE%
)
echo mode: %MODE%
Выход, который я получаю:
C:\>test.bat test
mode: FOOBAR
mode: test
Почему эхо внутри блока кода не получает новое значение переменной? В фактическом коде, который я пишу, мне нужно создать несколько переменных и ссылаться на них в пределах области if/else. Я мог бы переключить это, чтобы использовать метки и gotos вместо if/else, но это не кажется почти таким же чистым.
Что вызывает такое поведение? Есть ли какой-то предел для переменных в кодовых блоках?