Установка переменных в Windows Batch Scripts

Описание конфигурации

OptIn Эта установка является конфигурацией по умолчанию. В системах с процессорами, которые могут реализовать осуществленный аппаратными средствами DEP, DEP включен по умолчанию для ограниченных системных двоичных файлов и программ, которые "подписываются". При использовании этой опции только системные двоичные файлы Windows покрыты DEP по умолчанию.

OptOut DEP включен по умолчанию для всех процессов. Можно вручную создать список определенных программ, которым не применили DEP при помощи диалогового окна System в Панели управления. Профессионалы информационных технологий (IT) могут использовать Инструментарий Совместимости приложения для "уклонения" одна или несколько программ от защиты DEP. Совместимость системы фиксирует, или контейнеры, поскольку DEP действительно вступает в силу.

AlwaysOn Эта установка предоставляет полную страховую защиту DEP целой системе. Все процессы, всегда выполняемые с примененным DEP. Список исключений для освобождения определенных программ от защиты DEP не доступен. Совместимость системы фиксирует для DEP, не вступают в силу. Программы, которые отказались при помощи Инструментария Совместимости приложения, выполненного с примененным DEP.

AlwaysOff Эта установка не предоставляет страховой защиты DEP никакой части системы, независимо от аппаратных средств поддержка DEP. Процессор не работает в режиме PAE, если/PAE опция не присутствует в файле Boot.ini.

2
задан 31 August 2009 в 19:59
2 ответа

Переменные в пакетном файле по умолчанию расширены в начале выполнения сценария; необходимо использовать задержанное расширение, которое доступно с"!" разделитель:

echo Source dir is: !SOURCE_DIR!

Это только работает, если задержанное расширение включено для интерпретатора команд, который по умолчанию не является; таким образом, необходимо включить его при запуске интерпретатора, с помощью CMD.EXE /V.

Можно также включить его с помощью этого оператора в пакетном файле:

setlocal ENABLEDELAYEDEXPANSION

Более подробная информация.

2
ответ дан 3 December 2019 в 11:19

Я, возможно, обработал его немного более простой...

@ECHO OFF       
SET SOURCE_DIR=
IF /I [%1]==[AAA] SET SOURCE_DIR=c:\dirA
IF /I [%1]==[ZZZ] SET SOURCE_DIR=c:\dirZ
IF [%SOURCE_DIR]==[] (
    ECHO "Usage: xxx <AAA|ZZZ>"
    EXIT 1
) 
ECHO Source dir is: %SOURCE_DIR%

Я должен признать, я немного экранирован относительно того, почему это работает, когда пример в вопросе не делает. Мое лучшее предположение - то, что это - проблема обзора. Поскольку в примере, переменный SOURCE_DIR был установлен в parens, его значении в корневом объеме, это остается неизменным. Мой сценарий изменяет SOURCE_DIR в корневом объеме.

Относительно того, почему Отложенный прием Расширения вызывает его к погрузке изменение, которое было внесено уровень объема глубже, кажется, что расширение происходит в начале каждого изменения объема. Таким образом путем задержки, Вы в основном вынуждаете это повторно расшириться после возврата корневому объему.

1
ответ дан 3 December 2019 в 11:19
  • 1
    Это работает, но я не вижу, каково различие к моей версии? Там должен я один, но I' m, не получая его... Вы могли объяснить? –  raoulsson 31 August 2009 в 19:57
  • 2
    Не уверенный, что я думал. Я вижу проблему ясно теперь. –  Nathan Hartley 3 September 2009 в 23:17

Теги

Похожие вопросы