|
Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » CMD/BAT - запуск в свернутом виде (start /min, cmd /K, exit) |
|
CMD/BAT - запуск в свернутом виде (start /min, cmd /K, exit)
|
Старожил Сообщения: 207 |
В Win9x команда start была отдельным исполняемым модулем start.exe
В WinXP/server START стала командой CMD.EXE со следующими нюансами:
Если ваши сценарии простые, проблема покажется несущественной и надуманной. В таком случае пост не для вас. Почувствовать проблему можно только, если ваши сценарии достаточно сложны и взаимосвязаны, могут запускаться непосредственно, из других сценариев, а также могут запускаться из планировщика (также непосредственно или косвенно). Допустим, есть BAT, который прекрасно работает. Мы его решили запускать через start /min из планировщика. Всего-то изменение способа запуска повлечет неприятную необходимость менять код: все goto :eof придется заменить на EXIT + поставить EXIT в конце (иначе окно не закроется и со временем накопится столько незакрытых черных окон, что сервер упадет). При этом BAT станет непригоден для использования, если он вызывается из другого BAT (т.к. завершится весь процесс CMD). Получается, если ставить цель написать сценарий, корректно работающий в различных вариантах запуска, необходимо следовать правилу, согласно которому, каждому сценарию должна в параметрах передаваться информацию о способе его запуска, а этот сценарий, в свою очередь, должен снабжать этой же информацией другие сценарии в цепочке, передавая ее параметрах вызова. Все это крайне неприятно, если не иметь отдельный исполняемый EXE модуль (как в Win9x), выполняющий запуск процесса/сценария в свернутом виде. Я решил проблему такой программкой на дельфи. Это снимает все негативные моменты + дает дополнительный бонус в виде отсутствия мелькания черных окон и/или сбивания фокуса при запуске из планировщика. Первый параметр - имя процесса (можно указывать EXE и также непосредственно BAT, без полного пути и расширения), остальные - параметры запускаемого процесса. Например: startmin cmd /c dir c:\*.* startmin "c:\Admin scripts\daily backup.bat" "\\server\common files\*.*" program startmin; uses SysUtils, Windows,ShellAPI; var Param,ProgCmdLine:AnsiString; i:integer; begin ProgCmdLine := ''; for i:= 2 to ParamCount do begin if i >= 3 then ProgCmdLine := ProgCmdLine +' '; Param := ParamStr(i); if Pos(' ',Param) <> 0 then Param := '"'+Param+'"'; ProgCmdLine := ProgCmdLine + Param; end; ShellExecute(0,nil,PChar(ParamStr(1)),PChar(ProgCmdLine),nil,SW_SHOWMINNOACTIVE); end. |
|
------- Отправлено: 01:43, 12-06-2012 |
Разный Сообщения: 1294
|
Профиль | Отправить PM | Цитировать выложите скомпилированную программу, а то скачивать delphi ради одной программы не хочется
|
Отправлено: 01:51, 12-06-2012 | #2 |
Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети. Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля. |
Старожил Сообщения: 207
|
Профиль | Отправить PM | Цитировать Цитата ferget:
|
|
------- Отправлено: 01:55, 12-06-2012 | #3 |
Ветеран Сообщения: 27449
|
Профиль | Отправить PM | Цитировать Моё мнение таково:
* лично я всегда использую «exit /b», а не «goto :eof», так что, «придётся менять» — мимо; * не вижу никакого смысла в сворачивании окон консоли командного процессора, ни из планировщика, ни интерактивно. |
Отправлено: 07:48, 12-06-2012 | #4 |
Старожил Сообщения: 207
|
Профиль | Отправить PM | Цитировать Цитата Iska:
Цитата Iska:
|
|||
------- Отправлено: 08:18, 12-06-2012 | #5 |
Ветеран Сообщения: 1758
|
Надуманная проблема, имхо. Что легче использовать сторонний бинарник или прописать exit в батнике?
|
Отправлено: 08:30, 12-06-2012 | #6 |
Старожил Сообщения: 207
|
Профиль | Отправить PM | Цитировать Цитата Foreigner:
|
|
------- Отправлено: 08:54, 12-06-2012 | #7 |
Ветеран Сообщения: 27449
|
Профиль | Отправить PM | Цитировать Цитата CyberMuesli:
![]() Цитата CyberMuesli:
|
||
Отправлено: 09:10, 12-06-2012 | #8 |
Старожил Сообщения: 207
|
Профиль | Отправить PM | Цитировать Цитата Iska:
|
|
------- Отправлено: 09:14, 12-06-2012 | #9 |
Ветеран Сообщения: 27449
|
Профиль | Отправить PM | Цитировать Цитата CyberMuesli:
|
|
Отправлено: 09:23, 12-06-2012 | #10 |
![]() |
Участник сейчас на форуме |
![]() |
Участник вне форума |
![]() |
Автор темы |
![]() |
Сообщение прикреплено |
| |||||
Название темы | Автор | Информация о форуме | Ответов | Последнее сообщение | |
есть ли утилитка для win7, которая автоматич запускает в свернутом виде программы? | HarrysFerrarievich | Хочу все знать | 5 | 15-12-2011 12:16 | |
fsck died with exit code 4 | hnsk | Общий по Linux | 2 | 20-09-2010 23:08 | |
[решено] Как после команды Run выполнить Exit | Centrinar | AutoIt | 5 | 01-02-2010 21:30 | |
kde cannot start :((( | DominuS | Общий по Linux | 7 | 04-05-2005 07:00 | |
CD Start-It | BORIS YK | Хочу все знать | 3 | 15-12-2003 00:10 |
|