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