setlocal

Запускает локализацию переменных среды в пакетном файле. Локализация продолжается до тех пор, пока не будет найдена соответствующая команда endlocal или не будет достигнут конец пакетного файла.

Syntax

setlocal [enableextensions | disableextensions] [enabledelayedexpansion | disabledelayedexpansion]

Parameters

Parameter Description
enableextensions Включает расширения команд до тех пор, пока не будет найдена соответствующая команда endlocal , независимо от настроек, заданных до выполнения команды setlocal .
disableextensions Отключает расширения команд до тех пор, пока не будет найдена соответствующая команда endlocal , независимо от параметра, заданного до запуска команды setlocal .
enabledelayedexpansion Включает отложенное расширение переменной среды до тех пор, пока не будет найдена соответствующая команда endlocal , независимо от настроек, заданных до выполнения команды setlocal .
disabledelayedexpansion Отключает отложенное расширение переменной среды до тех пор, пока не будет найдена соответствующая команда endlocal , независимо от настроек, заданных до выполнения команды setlocal .
/? Отображает справку в командной строке.

Remarks

  • Если вы используете setlocal вне сценария или командного файла, это не дает никакого эффекта.

  • Используйте setlocal для изменения переменных среды при запуске пакетного файла. Изменения среды, внесенные после запуска setlocal, являются локальными для командного файла. Программа Cmd.exe восстанавливает прежние настройки, когда встречает команду endlocal или доходит до конца пакетного файла.

  • В пакетной программе может быть несколько команд 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 при отключении командных расширений, команда verify инициализирует переменную ERRORLEVEL ненулевым значением, если вы используете ее с недопустимым аргументом. Кроме того, если вы используете команду setlocal с аргументами {enableextensions | disableextensions} или {enabledelayedexpansion | disabledelayedexpansion} и она не устанавливает переменную ERRORLEVEL равным 1, расширения команд недоступны.

Examples

Чтобы локализовать переменные среды в пакетном файле, выполните следующий пример сценария:

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