Setlocal
Начало области задания для определения переменных среды в пакетном файле. Локальное окружение используется до тех пор, пока не встретится команда 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
Для вопросов, обсуждений, замечаний, предложений и т. п. можете использовать раздел форума этого сайта (требуется регистрация).
Новый раздел о средствах командной строки в рамках этого же проекта расположен здесь