Страницы: 1 .. 152 153 154 155 156 .. 282
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, расширения командного процессора недоступны.
Примеры
Локальное изменение переменных среды в пакетном файле может быть использовано следующим образом:
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
1 .. 152 153 154 155 156 .. 282