setlocal
Запускает локализацию переменных среды в пакетном файле. Локализация продолжается до тех пор, пока не будет обнаружена соответствующая команда или конец пакетного файла.
Синтаксис
setlocal [enableextensions | disableextensions] [enabledelayedexpansion | disabledelayedexpansion]
Параметры
Параметр | Описание |
---|---|
enableextensions | Включает расширения команд до тех пор, пока соответствующая команда не будет обнаружена, независимо от параметра перед выполнением команды setlocal. |
disableextensions | Отключает расширения команд до тех пор, пока соответствующая команда не будет обнаружена, независимо от параметра перед выполнением команды setlocal. |
enabledelayedexpansion | Включает расширение отложенной переменной среды до тех пор, пока не будет обнаружена соответствующая команда endlocal, независимо от параметра перед выполнением команды setlocal. |
disabledelayedexpansion | Отключает отложенное расширение переменной среды до тех пор, пока не будет обнаружена соответствующая команда endlocal, независимо от параметра перед выполнением команды setlocal. |
/? | Отображение справки в командной строке. |
Замечания
Если вы используете setlocal вне скрипта или пакетного файла, он не действует.
Используйте setlocal для изменения переменных среды при запуске пакетного файла. Изменения среды, внесенные после выполнения setlocal , являются локальными для пакетного файла. Программа Cmd.exe восстанавливает предыдущие параметры при обнаружении конечной команды или достижении конца пакетного файла.
В пакетной программе может быть несколько команд setlocal или endlocal (то есть вложенные команды).
Команда setlocal задает переменную ERRORLEVEL. Если передать {enableextensions | disableextensions} или {enabledelayedexpansion | disabledelayedexpansion}, переменная ERRORLEVEL имеет значение 0 (ноль). В противном случае для него задано значение 1. Эти сведения можно использовать в пакетных сценариях, чтобы определить, доступны ли расширения, как показано в следующем примере:
verify other 2>nul setlocal enableextensions if errorlevel 1 echo Unable to enable extensions
Так как cmd не задает переменную ERRORLEVEL при отключении расширений команд, команда проверки инициализирует переменную ERRORLEVEL в ненулевое значение при использовании с недопустимым аргументом. Кроме того, если вы используете команду setlocal с аргументами {enableextensions disableextensions | } или {enabledelayedexpansion disabledelayedexpansion | }, а переменная ERRORLEVEL не имеет значения 1, расширения команд недоступны.
Примеры
Чтобы локализовать переменные среды в пакетном файле, выполните следующий пример сценария:
rem *******Begin Comment**************
rem This program starts the superapp batch program on the network,
rem directs the output to a file, and displays the file
rem in Notepad.
rem *******End Comment**************
@echo off
setlocal
path=g:\programs\superapp;%path%
call superapp>c:\superapp.out
endlocal
start notepad c:\superapp.out