Как работает пакетный файл Microsoft? - PullRequest
1 голос
/ 20 июня 2009

Когда вы создаете командный файл Microsoft, т.е. сохраняете

@echo off
:loop
echo HI!
goto loop

как hiloop.bat, как работает код? Первоначально я думал, что он работает так же, как любой другой код, такой как C ++, но потом я где-то читал, что пакетный файл напрямую работает с ОС, или что-то подобное, что делает его чрезвычайно эффективным, поэтому

Как работает файл Microsoft .bat?

Ответы [ 3 ]

2 голосов
/ 20 июня 2009

Пакетные файлы, оканчивающиеся на .bat, интерпретируются command.com и запускаются под эмуляцией MS-DOS.

Пакетные файлы, оканчивающиеся на .cmd, интерпретируются cmd.exe и запускаются как консольные приложения Windows.

Вы можете запустить интерпретатор команд в интерактивном режиме, используя «Пуск», «Выполнить», а затем введите command.com или cmd.exe. Он запросит у вас команды и выполнит каждую строку после ввода. Пакетный файл в основном просто определяет команды заранее, чтобы вам не приходилось их набирать. Пакетный файл не был предварительно обработан или скомпилирован, поэтому прирост эффективности практически отсутствует.

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

2 голосов
/ 20 июня 2009

Это полностью интерпретируется как можно медленнее. Программа (процессор командной строки) интерпретирует каждую строку по очереди, выясняет, что она хочет сделать, делает это, и либо проверяет следующую строку, либо идет туда, куда ей говорят.

Однако, поскольку командный файл может вызывать помощь COM-библиотек (которые по сути являются скомпилированными программами), все, что делается в них, может быть очень эффективным. И есть тысячи библиотек с такими функциональными возможностями, как доступ к базе данных, использование компонентов интерфейса и большинство всего, что вам нужно для создания многих сложных, но обычных вещей.

0 голосов
/ 20 июня 2009

Пакетные файлы выполняются интерпретируемой оболочкой (в Windows это cmd.exe). Оболочка считывает каждую строку файла, начиная с верхней части, и выполняет строку как команду, как если бы вы ввели ее в командную строку.

Существуют исключения, такие как команда goto, которая не имеет смысла, если вы набираете ее в командной строке, но имеет место при выполнении в командном файле. Увидев команду goto, оболочка вернется к началу файла и прочитает каждую строку по очереди, пока не найдет метку, указанную в goto. Затем он начинает выполняться оттуда.

Вышеприведенный метод интерпретируется , а не скомпилирован , поэтому он намного менее эффективен при выполнении, чем скомпилированный язык, такой как C ++. Я бы никогда не назвал командные файлы «чрезвычайно эффективными». Может быть "чрезвычайно в эффективном".

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...