|
Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » CMD/BAT - [решено] Вызов программы с помошью call |
|
|
CMD/BAT - [решено] Вызов программы с помошью call
|
Новый участник Сообщения: 12 |
Профиль | Отправить PM | Цитировать |
|
Отправлено: 13:45, 20-06-2017 |
Ветеран Сообщения: 27449
|
Профиль | Отправить PM | Цитировать Цитата rene:
|
|
Отправлено: 14:32, 20-06-2017 | #2 |
Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети. Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля. |
Новый участник Сообщения: 12
|
Профиль | Отправить PM | Цитировать http://scriptcoding.ru/2013/08/20/fu...mandno-stroki/
Раздел Процедуры. Дословно там написано "Учтите, что вы можете вызвать другую программу и без использования функции call, но в этом случае контроль над дочерним приложением будет утерян." |
Отправлено: 16:13, 20-06-2017 | #3 |
Забанен Сообщения: 793
|
call никак не может управлять приложением, он лишь может запустить бинарник как пакетный файл и передать ему опредленные параметры, не более. В этом можно убедиться, разобрав код call в дизассемблере.
|
Отправлено: 16:41, 20-06-2017 | #4 |
Ветеран Сообщения: 27449
|
Профиль | Отправить PM | Цитировать Да, я вижу, что там именно так и написано. Другое дело, что фраза «контроль над дочерним приложением» бессмысленна по сути и по содержанию. Никакого «контроля» нет. Что с call, что без call. Вся разница заключается только в том, что при использовании call создаётся новый контекст текущего пакетного файла. Каким макаром это может обеспечить некий мифический контроль, а без него этот некий контроль «будет утерян» — остаётся на совести автора. Я лично не могу сказать по этому поводу ничего вразумительного.
Код вида: можно смело именовать «убей себя апстену». Потому как должно быть либо: либо: Вместо «exit /b» может быть «goto :eof» — переход на скрытую метку конца пакетного файла — если нам, скажем, принципиально не важно возвращать родительскому процессу код завершения пакетного файла. Посему совершенно нет нужды ни в какой метке в конце пакетного файла. Тем паче, что давать меткам имена внутренних команд — моветон. |
|
Отправлено: 16:42, 20-06-2017 | #5 |
Новый участник Сообщения: 12
|
Профиль | Отправить PM | Цитировать Большое спасибо за разъяснения
|
Отправлено: 16:52, 20-06-2017 | #6 |
Ветеран Сообщения: 27449
|
Профиль | Отправить PM | Цитировать Я, кажется, понял, в чём дело. Автор, как говорится, слышал звон, да не понял, где он, и, поскольку не разобрался — где, начал выдумать свою извращённую логику
rene, когда мы вызываем из пакетного файла X пакетный файл Y, и нам требуется, чтобы после завершения работы пакетного файла Y управление было возвращено в пакетный файл X, и его обработка продолжилась (а именно так обычно и бывает) — вот тут как раз и следует использовать call <Путь\Имя пакетного файла Y>. Как видите, после вызова пакетного файла просто как «"Y.cmd"» — управление в пакетный файл X.cmd не возвращается, посему команда «echo 3. [%~0]» не выполняется. |
Отправлено: 17:18, 20-06-2017 | #7 |
Новый участник Сообщения: 12
|
Профиль | Отправить PM | Цитировать Iska, Я правильно понимаю, что это справедливо только для пакетных файлов, а бинарники после выполнения в любом случае не остановят выполнение скрипта? И потому вызывать бинарник с помощью call не имеет никакого смысла?
|
Отправлено: 18:49, 20-06-2017 | #8 |
Ветеран Сообщения: 27449
|
Профиль | Отправить PM | Цитировать Цитата rene:
|
|
Отправлено: 19:17, 20-06-2017 | #9 |
Новый участник Сообщения: 12
|
Профиль | Отправить PM | Цитировать Поясните пожалуйста конструкцию %~0 и чем она отличается от %0 ?
|
Отправлено: 19:23, 20-06-2017 | #10 |
|
Участник сейчас на форуме | Участник вне форума | Автор темы | Сообщение прикреплено |
| |||||
Название темы | Автор | Информация о форуме | Ответов | Последнее сообщение | |
[решено] Вызов программы в Windows как в Linux | VokaMut | Вебмастеру | 2 | 04-09-2014 02:34 | |
C/C++ - [решено] Вызов программы по shortcut | lxa85 | Программирование и базы данных | 1 | 25-08-2013 01:47 | |
CMD/BAT - Многократный вызов программы | Smasher | Скриптовые языки администрирования Windows | 2 | 25-09-2012 23:51 | |
Прочее - С помошью какой программы можно включить Wi - Fi адаптер на ноуте Fujitsu - Siemens | Tokzic | Сетевые технологии | 5 | 18-01-2009 13:41 | |
[решено] программы в открыть с помошью | Кос | Хочу все знать | 1 | 14-10-2007 09:27 |
|