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
Setver
Устанавливает номер версии MS-DOS, который подсистема MS-DOS сообщает программам. Использованная без параметров, команда setver выводит таблицу текущих версий.
Синтаксис
setver [диск:путь] [имя_файла n.nn]
setver [диск:путь] [имя_файла [/delete [/quiet]]
Для вывода сведений о текущих назначениях версий используется следующий формат:
setver [диск:путь]
Параметры
[диск:путь
Указывает путь к файлу Setver.exe.
имя_файла
Задает имя файла программы (.exe или .com), которое будет добавлено к таблице назначения версий. Использование подстановочных знаков (* и ?) не допускается.
n.nn
Задает версию MS-DOS (например, 3.3 или 4.01), которую подсистема MS-DOS сообщает заданной программе.
/delete
Удаляет сведения о данной программе из таблицы назначения версий. Так же можно использовать параметр /d.
/quiet
Скрывает сообщение, которое обычно выводится при удалении записи из таблицы назначения версий.
/?
Отображает справку в командной строке.
Примечания
- Использование таблицы назначения версий
Многие программы, которые были разработаны для использования с предыдущими версиями MS-DOS, будут корректно работать с системой Windows XP. Однако, в некоторых случаях, программа может не работать до тех пор, пока ее имя не будет включено в таблицу назначения версий. Эта таблица сообщает программе, что она работает с той версией MS-DOS, для которой она была разработана, несмотря на то что она в действительности работает с подсистемой MS-DOS. Воспринимая версию MS-DOS 5.0 как более старую, программа может работать корректно. Однако, использование команды setver не решит проблему с теми программами, которые несовместимы с системой Windows XP.
- Загрузка таблицы назначения версий в память
Перед использованием команды setver таблица назначений версий должна быть загружена в память с помощью команды device в файле Config.nt.
- Обновление таблицы назначения версий
После обновления таблицы назначения версий (добавления или удаления записей) должен быть запущен новый экземпляр интерпретатора командной строки для считывания обновленной таблицы назначения версий.
- Обновление существующих записей
Если задано имя файла, который уже находится в таблице назначения версий, новая запись заменит старую.
- Коды завершения команды setver
Чтобы проанализировать в пакетной программе коды завершения, выведенные командой setver, используйте параметр уровень_ошибки в командной строке if. В следующей таблице перечислены коды завершения с кратким описанием.
Код завершения | Описание |
Программа setver успешно закончила работу | |
Задан неверный ключ командной строки | |
Задано неверное имя файла | |
Недостаточно системной памяти для работы команды | |
Задан недопустимый формат номера версии | |
Программа setver не может найти заданную запись в таблице назначения версий | |
Программа setver не может найти файл Setver.exe | |
Задан недопустимый диск | |
Задано слишком много параметров команды | |
Отсутствует параметр команды setver | |
Программа setver обнаружила ошибку при чтении файла Setver.exe | |
Файл Setver.exe поврежден | |
Заданный файл Setver.exe не поддерживает таблицу назначения версий | |
В таблице назначения версий недостаточно места для новой записи | |
Программа setver обнаружила ошибку при записи в файл Setver.exe |
Примеры
Для запуска Myprog.exe, файла, который выполняется с MS-DOS версии 3.30, создайте запись в таблице назначения версий, в результате чего, Myprog.exe интерпретирует подсистему MS-DOS, как версию 3.30, вводом следующей команды: