|
Автор SavageNoName
|
|
Начало области задания для определения переменных среды в пакетном файле. Локальное окружение используется до тех пор, пока не встретится команда endlocal или не будет достигнут конец пакетного файла. Синтаксисsetlocal {enableextension | disableextensions} {enabledelayedexpansion | disabledelayedexpansion} Аргументыenableextension Включает расширения командного процессора до появления соответствующей команды endlocal, вне зависимости от состояния расширений командного процессора перед командой setlocal. disableextensions Выключает расширения командного процессора до появления соответствующей команды endlocal, вне зависимости от состояния расширений командного процессора перед командой setlocal. enabledelayedexpansion Включает расширения переменной среды с задержкой до появления соответствующей команды endlocal, вне зависимости от состояния расширений командного процессора перед командой setlocal. disabledelayedexpansion Выключает расширения переменных среды с задержкой до появления соответствующей команды endlocal, вне зависимости от состояния расширений командного процессора перед командой setlocal. /? Отображает справку в командной строке. Примечания- Использование команды setlocal
Команда setlocal не выполняется при использовании вне сценария или пакетного файла. - Изменение переменных среды
Используйте команду setlocal для изменения переменных среды при выполнении пакетного файла. Изменения среды, выполненные после setlocal, являются локальными для пакетного файла. Cmd.exe восстанавливает первоначальные параметры при обнаружении команды endlocal или достижении конца пакетного файла. - Допускается использование нескольких команд setlocal и endlocal в пакетной программе (так называемых, вложенных команд).
- Проверка расширений командного процессора в пакетных файлах
Команда setlocal устанавливает переменную ERRORLEVEL. При выполнении аргументов {enableextension | disableextensions} или {enabledelayedexpansion | disabledelayedexpansion} переменная ERRORLEVEL имеет значение ноль (0). В противном случае ее значение — 1. Этим можно воспользоваться в пакетных программах для проверки доступности расширений командного процессора, например: verify other 2>nul setlocal enableextensions if errorlevel 1 echo Включение расширений командного процессора невозможно Так как команда cmd не устанавливает значение переменной ERRORLEVEL, когда расширения командного процессора отключены, команда verify устанавливает переменную ERRORLEVEL в ненулевое значение при использовании этой команды с недопустимым аргументом. Если используется команда setlocal с аргументами {enableextension | disableextensions} или {enabledelayedexpansion | disabledelayedexpansion} и значение переменной ERRORLEVEL не 1, расширения командного процессора недоступны. Дополнительные сведения о расширениях командного процессора см. в разделе cmd, доступном по ссылке «».
ПримерыЛокальное изменение переменных среды в пакетном файле может быть использовано следующим образом: rem *******Начало комментария************** rem Эта программа запускает приложение superapp в сети, rem записывает вывод в файл и загружает этот файл в программу rem Блокнот. rem *******Конец комментария ************** @echo off setlocal path=g:\programs\superapp;%path% call superapp>c:\superapp.out endlocal start notepad c:\superapp.out
|