История возможностей командной строки Windows
Я готовлю сценарий Windows BAT, который использует некоторые новые функции, такие как setlocal
и группа команд в циклах FOR, как
for %%a in (a b c) do (
del %%a.bak
ren %%.a %%a.bak
)
Я хотел бы знать, когда были введены отдельные функции. Таким образом, я мог видеть, совместим ли такой сценарий BAT, например, с Windows XP, Windows 7 или Windows 8.1.
Редактировать:
Команда FOR довольно старая. Меня интересует синтаксис группировки команд с круглыми скобками.
Но есть и другие особенности. например, вызов функции внутри скрипта BAT. Нет смысла просить каждую отдельную функцию. Вот почему я попросил историю.
2 ответа
Setlocal/endlocal и синтаксис FOR присутствуют как минимум с 1996 года. Windows NT 4 (июль 1996 года) включала их и большинство, если не все, что мы видим сегодня. Самые большие изменения с тех пор произошли с Windows 2000 (декабрь 1999). Только один пример: в это время для setlocal доступна дополнительная пара переключателей: ENABLEDELAYEDEXPANSION / DISABLEDELAYEDEXPANSION. Сценарий, который запускается в NT4, должен запускаться в каждой ОС семейства NT начиная с (2000, XP, Vista, 7, 8, 8.1 и Windows 10, плюс Server 2003 до 2016). Страницы сценариев Роба ван дер Вуде содержат список команд, включая информацию о том, в какой ОС они впервые появились. Вы можете использовать это для обеспечения обратной совместимости.
Microsoft ничего не говорит об истории команд, поэтому я обратился к Wayback Machine и искал даты сохраненной документации.
Wayback Machine, похоже, плохо справлялась со ссылками Microsoft, поэтому я искал в документации ss64.com.
Для setlocal
Команда, самый ранний экземпляр страницы для setlocal был записан на Wayback Machine в феврале 2003 года.
Для FOR
Команда, самый ранний экземпляр страницы для FOR был также записан на Wayback Machine в феврале 2003 года.
Похоже, что эти функции датируются как минимум Windows XP и Windows Server 2003.
Я протестировал обе команды на виртуальной машине XP, и они работали безупречно. У меня нет доступа к более ранним версиям Windows, но я думаю, что XP достаточно рано для ваших целей.