Изучаю возможности некоторой автоматизации нативными средствами в Windows.
Соответственно необходимо писать batch код в .cmd файлах.
В примерах наткнулся на получение контента переменной с помощью
!var!
, хотя обычно это
%var%
Загулил для чего используются 2 восклицательных знака в bat cmd и один из ответов был:
... два восклицательных знака ! используются для указания, что переменная должна быть расширена в момент выполнения, а не при первом чтении строки, что делает их полезными в циклах и других блоках кода, где переменные могут изменяться.
С таким кодом
@echo off
setlocal enabledelayedexpansion
set var=initial
echo Before loop: !var!
for %%i in (1 2 3) do (
set var=inside_loop_%%i
echo Inside loop: !var!
)
echo After loop: !var!
endlocal
Вопрос:
Зачем вообще в batch-сценариях сделали режим enabledelayedexpansion?
То есть зачем сделали ограничение, что в циклах и условиях ранее объявленные переменные нельзя изменить в обычном режиме работы?