Подтвердить что ты не робот

Использование переменной среды Windows undefined?

Вот простой, но загадочный вопрос.

Для переменной undefined среды Windows, например, abc

В окне командной строки ECHO [% abc%] приводит к [% abc%]

Но в пакетном файле .CMD ECHO [% abc%] приводит к []

Почему разница? Я исследовал команду ECHO и не могу найти ничего об этом. Меня беспокоит, где еще может быть эта тонкая разница.

4b9b3361

Ответ 1

Действительно хороший вопрос! Смущает ха?

На самом деле существует два разных синтаксических анализатора, используемых для анализа пакетных сценариев и команд командной строки.

Цитата из этот отличный ответ:

BatchLineParser - Парсер внутри пакетных файлов, для строк или блоков

CmdLineParser - Как и BatchLineParser, но непосредственно в командной строке, работает разные

Ключевое различие заключается в первом этапе анализа, особенно в расширении %var%:

В BatchLineParser, если var не существует, в CmdLineParser ничего не будет заменено, если var не определено, выражение не изменится.

Так почему же кто-то его проектировал? Я понятия не имею.