1

Я не уверен, почему запуск этой команды из командной строки не работает, setlocal может быть вызван только из командного файла?

setlocal EnableDelayedExpansion & for /l %i in (1,1,3) do (set text=%i & echo Hello !text!)

Ожидаемый результат:

Привет 1
Привет 2
Привет 3

ОБНОВЛЕНИЕ: я использую Windows 8.1

2 ответа2

0

Ответ оказался довольно простым!

for /l% i in (1,1,3) do (вызов набора текста =% i & echo Hello% text%)

0

Вопрос есть ответ. Вы явно с помощью интерпретатора cmd команды Microsoft, в Windows NT; и в этом интерпретаторе команд setlocal действительно не действует, когда вызывается из командного сценария.

Другие интерпретаторы команд отличаются в том, что делает setlocal , в том, может ли он вызываться из командного сценария, в том, является ли он вложенным и контролирует ли он то, что вы пытаетесь контролировать.

Исходный setlocal в cmd Microsoft в OS/2 версии 1 только что сохранил текущий диск, каталог и среду; не имел никакого эффекта от командных сценариев; и не гнездился. Как видите, за последнюю четверть века команда была расширена в разных направлениях.

Одна из причин такого различия заключается в том, что TCC от JP Software постепенно расширяет переменные в составных командах и не нуждается в трюке с отложенным расширением переменных, чтобы делать то, что вы пытаетесь сделать. Это:

for /l %i in (1,1,3) do (set text=%i & echo Hello %text%)
... печатает то, что вы хотите напечатать.

дальнейшее чтение

  • SETLOCAL. Справочник по командной строке Windows XP A – Z. TechNet. Корпорация Майкрософт.
  • SETLOCAL. Возьмите Command / TCC Help. JP Software.
  • Джонатан де Бойн Поллард. SETLOCAL. Справочник по интерпретатору 32-битных команд.
  • SETLOCAL . Справочник по командам OS / 2 Warp. Корпорация IBM.
  • Дж. Эммет Бим (1988). Иллюстрированный OS / 2 . Wordware Publishing. ISBN 9781556220531. с. 40

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .