![]() |
Вызов программы с помошью call
Доброго времени суток!
В примерах часто встречаю такое: Код:
call calc |
Цитата:
|
http://scriptcoding.ru/2013/08/20/fu...mandno-stroki/
Код:
@echo off |
call никак не может управлять приложением, он лишь может запустить бинарник как пакетный файл и передать ему опредленные параметры, не более. В этом можно убедиться, разобрав код call в дизассемблере.
|
Да, я вижу, что там именно так и написано. Другое дело, что фраза «контроль над дочерним приложением» бессмысленна по сути и по содержанию. Никакого «контроля» нет. Что с call, что без call. Вся разница заключается только в том, что при использовании call создаётся новый контекст текущего пакетного файла. Каким макаром это может обеспечить некий мифический контроль, а без него этот некий контроль «будет утерян» — остаётся на совести автора. Я лично не могу сказать по этому поводу ничего вразумительного.
Код вида: Цитата:
Код:
if "%1"=="" ( Код:
if "%1"=="" echo Peredayte parametry scenariju!& exit /b 1 |
Большое спасибо за разъяснения
|
Я, кажется, понял, в чём дело. Автор, как говорится, слышал звон, да не понял, где он, и, поскольку не разобрался — где, начал выдумать свою извращённую логику
rene, когда мы вызываем из пакетного файла X пакетный файл Y, и нам требуется, чтобы после завершения работы пакетного файла Y управление было возвращено в пакетный файл X, и его обработка продолжилась (а именно так обычно и бывает) — вот тут как раз и следует использовать call <Путь\Имя пакетного файла Y>. Пример
X.cmd
Код:
@echo off Y.cmd
Код:
@echo off ![]() |
Iska, Я правильно понимаю, что это справедливо только для пакетных файлов, а бинарники после выполнения в любом случае не остановят выполнение скрипта? И потому вызывать бинарник с помощью call не имеет никакого смысла?
|
Цитата:
|
Поясните пожалуйста конструкцию %~0 и чем она отличается от %0 ?
|
Символ «~» в этом месте означает «убрать обрамляющие кавычки из содержимого переменной, если они есть». См.:
Код:
call /? |
Время: 20:23. |
Время: 20:23.
© OSzone.net 2001-