Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Delphi: WinAPI и системное программирование > соединение БАТ файлов


Автор: Max111 2.5.2007, 10:34
Доброе утро

Есть программный комплекс который практически весь состоит из бат файлов
Мне Необходимо  переделать их в один исполняемый модуль
но к сожелению совершенно забыл механизм работы БАТ файлов, поэтому очень хотелось бы получить помощь по следующему вопросу

Фрагмент первого БАТ

@cd %hitVersion%
@call hit.bat
@cd ..

hit.bat представляет из себя вызов исполняемой программы для загрузки базы
wtxtcl hitLoad.tcl

Теперь вопрос 1:
Когда первый бат доходит до строки @call hit.bat
он вызывает батник hit.bat и находиться в состоянии ожидания пока второй батник не завершится
или он (первый) продолжает свою работу дальше ?

Теперь вопрос 2:
Когда вызвался второй батник 
он ожидает завершения выполнения программы wtxtcl или 
вызывает ее и продолжает свою работу?

То есть какой механизм вызова других exe и bat файлов из бат файла
Бат файл останавливает свою работу и ждет завершения вызванного приложения?
Бат файл не останавливает свою работу и вызвав другое приложение продолжает свое выполнение?

Заранее спасибо


Автор: Yanis 2.5.2007, 12:14
Цитата(Max111 @  2.5.2007,  11:34 Найти цитируемый пост)
он вызывает батник hit.bat и находиться в состоянии ожидания пока второй батник не завершится
Да.

Цитата(Max111 @  2.5.2007,  11:34 Найти цитируемый пост)
или он (первый) продолжает свою работу дальше ?
Нет.

Цитата(Max111 @  2.5.2007,  11:34 Найти цитируемый пост)
Когда вызвался второй батник 
он ожидает завершения выполнения программы wtxtcl или 
Да.

Цитата(Max111 @  2.5.2007,  11:34 Найти цитируемый пост)
или 
вызывает ее и продолжает свою работу?
Нет.

Это я знаю, но если бы и не знал, то прочитал справку и узнал. Что тебе и советую делать в следующий раз.

Автор: Snowy 2.5.2007, 12:19
call вызывает другой батник, ждёт его завершения, продолжает работу.
Если батник вызывается напрямую (без call), работа текущего батника завершается.
При вызове exe происходит ожидание его завершения и работа батника продолжается.
Код завершения exe доступен через ERRORLEVEL.

Автор: ama_kid 2.5.2007, 12:26
А что, разве во времена DOS (когда были изобретены пакетные файлы) было понятие "многопоточности"? Имхо даже по этому соображению можно было бы утверждать, что батник ждет исполнения предыдущей команды... А если учесть, что в батнике есть спецпеременная %ErrorLevel%, которая хранит значение кода возврата последней исполнявшейся программы - тогда можно уже утверждать тоже самое с большой долей уверенности  smile Ну и в конце концов, можно ведь проверить. Запусти на исполнение следующий код:
Код
@call command.com
@pause

Ты не увидишь надпись "Press any key to continue..." до того, как введешь exit в командном интерпретаторе, что говорит о том, что выполнение идет последовательно... Для вызова другого батника - все аналогично...

Автор: Yanis 2.5.2007, 15:53
ama_kid
Это ты можешь так рассуждать. Поэтому ты и не заедаешь таких вопросов. А другие не могут… к большому сожалению.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)