ComradG
Silver Member | Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору mugil_cephalus Языки программирования не забываю, а к чему собственно вопрос? И потом, относительно переменных. Код: @echo off set a=7 setlocal set a=1 echo %a% endlocal echo %a% set a= exit /b | Полагаю, тут ясно что к чему: глобальная переменная остается неизменной до тех пор, пока она не будет изменена в основном блоке батника. Код: @echo off set a=7 setlocal set a=1 echo %a% endlocal set /a a=7+2 echo %a% set a= exit /b | С этим разобрались (да и потом, ты знаешь все это сам). Теперь о жизненном цикле переменных. Здесь все немногим сложнее. Переменные, определяемые в паре лексем setlocal и endlocal помещаются в некоторую ячейку памати, в которой они существуют до достижения команды endlocal: достигнув оной они удаляются из памяти раз и навсегда. Так называемые глобальные переменные существуют в памяти до тех пор, пока они не будут выгружены из памяти вручную или не будет закрыто окно самой консоли. Если с последним все ясно, то относительного первого многие начинают спорить, дескать, память не может быть очищена ручную и т.д. Да, некотрые данные из памяти действительно невозможно удалить вручную, это касается впервую очередь мусора, который оставляет после себя обработчик for, но не set, - тут разве что и можно указать в сторону встроенного справочника относительно консоли. А вот с call все обстоит несколько сложнее... | Всего записей: 2041 | Зарегистр. 05-07-2008 | Отправлено: 11:21 19-07-2010 | Исправлено: ComradG, 12:44 19-07-2010 |
|