|
Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » CMD/BAT - [решено] Как сдедать выполнение команды только после выполнения куска кода? |
|
CMD/BAT - [решено] Как сдедать выполнение команды только после выполнения куска кода?
|
Старожил Сообщения: 318 |
Профиль | Отправить PM | Цитировать Собственно, символ & означает, чтобы в конструкции команда1 & команда2 команда 2 выполнялась только после завершения команды 1.
Мне нужно упорядочить выполнение кода блоками, т.е. чтобы второй блок команд выполнялся только после завершения первого блока команд. конструкция типа ( ... . ... ) & ( ..... ..... ) не работает как правильно то? |
|
Отправлено: 19:08, 22-08-2010 |
Googler Сообщения: 3665
|
Профиль | Отправить PM | Цитировать Цитата Ingolder:
"&" просто позволяет иногда объединить несколько строк в одну - не более того Цитата Ingolder:
|
||
Отправлено: 19:20, 22-08-2010 | #2 |
Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети. Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля. |
Старожил Сообщения: 318
|
Профиль | Отправить PM | Цитировать возможно он не работает изза вложенности. у меня там типа:
( (...)&(...) .... )&( (...)&(...) .... ) или вложенность тоже должна работать? = ) |
Отправлено: 22:36, 22-08-2010 | #3 |
Googler Сообщения: 3665
|
Профиль | Отправить PM | Цитировать |
Отправлено: 07:08, 23-08-2010 | #4 |
Ветеран Сообщения: 2726
|
Профиль | Отправить PM | Цитировать С моей точки зрения, если речь идёт о неких блоках, логично оформить их в виде процедур - читаемость кода лучше, особенно если речь идёт о какой-то вложенности (правда, что под этим подразумевается, от меня пока ускользает).
@Echo off Call :Comm1 Call :Comm2 Call :Comm3 GoTo :EOF :Comm1 Echo Здесь команды первого блока GoTo :EOF :Comm2 Echo Здесь команды второго блока GoTo :EOF :Comm3 Echo Здесь команды третьего блока GoTo :EOF Call :Comm1|Call :Comm2|Call :Comm3 Работает тоже, как, впрочем и Call :Comm1 & Call :Comm2 & Call :Comm3 Цитата:
:Comm2 Call :Comm1 Echo Здесь команды второго блока GoTo :EOF Использование процедур позволяет компоновать код достаточно гибко и читаемо. |
||
------- Последний раз редактировалось megaloman, 23-08-2010 в 19:16. Отправлено: 16:51, 23-08-2010 | #5 |
Старожил Сообщения: 318
|
Профиль | Отправить PM | Цитировать Так, товарищи, вы меня не понимаете потому что по ходу я не понимаю, чем отличается вот такая конструкция
команда1 команда2 вот от такой: команда1 & команда2 Насколько я понимаю, в первом случае командная строка инициирует исполнение команды1, и после этого инициирует исполнение команды2, не дожидаться завершения команды1, а во втором случае она запускает команду 2 только после завершения команды1. У меня есть: команда1 команда2 команда3 команда4 Мне нужно чтоб : -команда 2 выполнилась только после завершения команды1 -команда 4 выполнилась только после завершения команд 1, 2 и 3. Как это сконструировать? ((команда1 & команда2) команда3) & команда 4 так будет работать? или как правильно? amel27, кажется это то, о чём вы и говорили. |
Отправлено: 13:51, 31-08-2010 | #6 |
Пользователь Сообщения: 140
|
Профиль | Отправить PM | Цитировать Цитата Ingolder:
Set a=11 & Set b=12 Echo %a% + %b% Set a=%b% & Set b=%a% Echo %a% ^<^> %b% & rem Спасибо, Amel27 и этот код Set a=11 & Set b=12 Echo %a% + %b% Set a=%b% Set b=%a% Echo %a% = %b% Цитата Ingolder:
Цитата megaloman:
Используйте оператор "&&" - для выполнения команды, только после удачного завершения предыдущей... |
|||
Последний раз редактировалось deepred, 31-08-2010 в 16:05. Отправлено: 14:05, 31-08-2010 | #7 |
Ушёл из жизни Сообщения: 6021
|
Профиль | Отправить PM | Цитировать Цитата Ingolder:
Цитата Ingolder:
Но здесь нужно сделать оговорку. Если команда 1 некий запускаемый файл, то он может порождать дочерний процесс и закрыть основной процесс не дожидаясь завершения дочернего процесса. Команда 2 ждет завершения именно основного процесса команды 1 и после его закрытия запускается команда 2 хотя фактически дочерний процесс команды 1 может еще продолжаться. Если Вы имеете дело именно с такими командами, то блоки и & здесь вряд ли помогут. Цитата Ingolder:
|
|||
Отправлено: 14:17, 31-08-2010 | #8 |
Старожил Сообщения: 318
|
Профиль | Отправить PM | Цитировать Огромное спасибо всем отписавшимся! За всё - За примеры и объяснения.
Вопрос прояснился. |
Отправлено: 22:52, 01-09-2010 | #9 |
Участник сейчас на форуме | Участник вне форума | Автор темы | Сообщение прикреплено |
| |||||
Название темы | Автор | Информация о форуме | Ответов | Последнее сообщение | |
CMD/BAT - [решено] Как записать в переменную результат выполнения команды? | MSI | Скриптовые языки администрирования Windows | 64 | 24-12-2020 18:20 | |
[решено] Как заткнуть *.cmd? Как скрыть выполнение DOS-овской команды? | J-S | Автоматическая установка Windows 2000/XP/2003 | 5 | 08-05-2010 22:24 | |
Разное - [решено] После выполнения команды пропала оценка производительности | Dosmod | Microsoft Windows 7 | 10 | 01-09-2009 09:00 | |
C/C++ - Выполнение кода и выделение памяти для переменной | Mr666 | Программирование и базы данных | 2 | 14-06-2008 15:19 | |
Выполнение произвольного кода Windows Media Player9 | mar | Защита компьютерных систем | 3 | 24-12-2004 22:18 |
|