|
Компьютерный форум 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 |
Ветеран Сообщения: 27449
|
Профиль | Отправить PM | Цитировать Risovod, как же «в другом», когда у Вас проблемы именно со startmin.exe?!
|
Отправлено: 19:57, 03-04-2019 | #41 |
Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети. Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля. |
Новый участник Сообщения: 35
|
Профиль | Отправить PM | Цитировать Iska, Вы знаете ответ на мой вопрос или просто набираете количество сообщений?
|
Отправлено: 12:54, 04-04-2019 | #42 |
Ветеран Сообщения: 27449
|
Профиль | Отправить PM | Цитировать Risovod, дабы у Вас больше не возникало претензий подобного рода — дальше без меня.
|
Отправлено: 00:40, 05-04-2019 | #43 |
Ветеран Сообщения: 1274
|
Профиль | Отправить PM | Цитировать Цитата Risovod:
Цитата Risovod:
потому как все работает как должно: до запуска Файл 157104 после запуска Файл 157105 |
||
Последний раз редактировалось alpap, 02-07-2020 в 15:59. Отправлено: 02:43, 05-04-2019 | #44 |
Новый участник Сообщения: 35
|
Профиль | Отправить PM | Цитировать Цитата alpap:
Цитата Risovod:
Пробовал так как указано в шапке темы: прописывал это в bat-файле и потом запускал через AnVir Task Manager, но всё равно окно консоли не скрывается. Если правильно Вас понял, то при запуске из командной строки мне нужно было прописать: , а как правильно это прописать в автозагрузку? Для временного выхода создал скрипт AHK, который сворачивает окно консоли и следом запускающейся виртуальной ОС (VirtualBoxVM.exe), но это всё равно не выход, так как окна всё равно мелькают на экране и всё равно не скрываются в трее. P.S. Iska, не хотел Вас обидеть, но Вы сами понимаете, что это вышло исходя из Вашего желания заняться неким "поучением" без каких либо предложений в решении поставленной просьбы. Да, видя Ваш статус и количество благодарностей, Вы многим помогли, но в данном случае все сообщения были направлены на просто поговорить с желанием указать на какие-то недостатки. Вы же могли уже в первом сообщении написать что-то вроде: Я не использую startmin.exe Цитата Iska:
Поэтому, всё же предлагаю, если есть желание и возможность, помочь в решении поставленной задачи. P.P.S. Понимаю, что описываемые в данной теме способы направлены только на отображение окна консоли, тем не менее и на этом этапе пока не добился успеха. Хотя перепробовал, на сколько правильно я их понял, много способов из интернета (путем прописывания команд в самом bat-файле и его ярлыке), но достичь поставленной задачи не получилось, а именно конечный итог должен быть: Сделать автозапуск виртуальной ОС (это решается bat-файлом с записью "C:\Program Files\Oracle\VirtualBox\VBoxManage.exe" startvm "Win XP") без появления окон консоли и запускаемого приложения. Кроме того, значок приложения должен сразу прятаться в трей, а не отображаться на панели задач. |
|||
Отправлено: 17:27, 05-04-2019 | #45 |
Ветеран Сообщения: 1274
|
Профиль | Отправить PM | Цитировать Risovod, так вам нужен скрытный запуск окна - это другая тема и разбиралось много раз, например здесь
вот моя утилита, bat для скрытия подавать параметром: hide_cmd.exe |
Отправлено: 23:00, 05-04-2019 | #46 |
Новый участник Сообщения: 35
|
Профиль | Отправить PM | Цитировать |
Отправлено: 09:50, 06-04-2019 | #47 |
![]() |
Участник сейчас на форуме |
![]() |
Участник вне форума |
![]() |
Автор темы |
![]() |
Сообщение прикреплено |
| |||||
Название темы | Автор | Информация о форуме | Ответов | Последнее сообщение | |
есть ли утилитка для 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 |
|