Я знаю, что уже ответил на аналогичный вопрос ( Запуск пакетного файла в фоновом режиме при загрузке Windows ), но на этот раз мне нужно запустить пакет:
- из другой партии,
- без отображения окна консоли,
- со всеми аргументами, переданными невидимой партии.
Первый пакет выполняется в окне консоли. Однако я не хочу, чтобы второй пакет (запущенный первым асинхронным способом ) также отображал окно консоли.
Я придумал сценарий VBScript, который делает именно это, и я помещаю его в качестве ответа для других , но если у вас есть другие идеи / решения, не стесняйтесь вносить свой вклад.
Примечание. Многие люди называют окно консоли командного процессора Windows не совсем правильным окном DOS.
Всем спасибо за ответы. Насколько я понимаю, если мне нужно асинхронно вызвать скрипт для работы в невидимом режиме:
- Из второго скрипта уже в окне консоли, этого
start /b
достаточно. - Из Windows, без запуска второго окна , мое решение все еще действует.
windows
batch-file
cmd
wsh
VonC
источник
источник
Ответы:
Вам нужно, чтобы второй командный файл работал асинхронно? Обычно один командный файл запускает другой синхронно с
call
командой, а второй использует окно первого.Вы можете использовать
start /b
second.bat запустить второй пакетный файл синхронно с вашей первой , что разделяет окно вашего первого своего. Если оба командных файла записываются в консоль одновременно, вывод будет перекрываться и, вероятно, не поддается расшифровке. Кроме того, вы захотите поместить команду в конец вашего второго командного файла, иначе вы окажетесь во второй оболочке, когда все будет сделано.exit
cmd
источник
Вот возможное решение:
Из первого сценария вызовите второй сценарий со следующей строкой:
На самом деле вы вызываете сценарий vbs с помощью:
%*
)Затем invis.vbs вызовет ваш скрипт с помощью метода Windows Script Host Run () , который принимает:
Вот invis.vbs:
источник
Преобразуйте командный файл в exe. Попробуйте Bat To Exe Converter или Online Bat To Exe Converter и выберите вариант, чтобы запустить его как приложение-призрак, то есть без окна.
источник
Я думаю, что это самое простое и кратчайшее решение для запуска командного файла без открытия окна DOS, это может сильно отвлекать, когда вы хотите запланировать периодический запуск набора команд, поэтому окно DOS продолжает появляться, вот ваше решение , Используйте сценарий VBS для вызова командного файла ...
Скопируйте приведенные выше строки в редактор и сохраните файл с расширением .VBS. Отредактируйте имя и путь к файлу .BAT соответственно.
источник
Set WshShell = Nothing
, у меня все сработало, и у вас может быть еще меньший способ сделать это.Вот моя коллекция способов добиться этого - и даже больше - там, где это было возможно, я попытался вернуть также PID запущенного процесса (все связанные сценарии можно загрузить и сохранить с любым именем, которое вы сочтете удобным):
1) Решение IEXPRESS можно использовать даже на старых машинах win 95/98. Iexpress - это действительно древний инструмент, который до сих пор поставляется с Windows, поскольку аргументы принимают только команду и ее аргументы.
Пример использования:
2) SCHTASKS - снова принимает только два аргумента - команду и аргументы. Также проверяет, запущен ли он с повышенными разрешениями, и, если возможно, получает PID процесса с помощью WEVTUTIL (доступно в Vista и более поздних версиях, поэтому более новая версия Windows получит PID) команду.
Пример использования:
3) 'WScript.Shell' - сценарий является полной оболочкой 'WScript.Shell', и все возможные параметры могут быть установлены через параметры командной строки. Это гибрид jscript / batch, который можно вызывать как летучую мышь.
Пример использования (для получения дополнительной информации распечатайте справку с помощью '-h'):
4) Win32_ProcessStartup - снова полная оболочка, и все параметры доступны через аргументы командной строки. На этот раз это гибрид WSF / batch с некоторым Jscript и некоторыми фрагментами кода VBScript, но он возвращает PID запущенного процесса. не скрыто, можно использовать некоторые параметры, такие как координаты X / Y (не применимо для каждого исполняемого файла, но, например, cmd.exe принимает координаты).
Пример использования (для получения дополнительной информации распечатайте справку с помощью '-h'):
5) Файл. NET решение . Используются большинство параметров ProcessStartInfo (но в конце я слишком устал, чтобы включать все):
Пример использования (для получения дополнительной информации распечатайте справку с помощью '-h'):
источник
В другом вопросе я предложил autoexnt . Это тоже возможно в этой ситуации. Просто установите службу для запуска вручную (т.е. не автоматически при запуске). Если вы хотите запустить свой пакет, измените файл autoexnt.bat, чтобы вызвать нужный пакетный файл, и запустите службу autoexnt.
Пакетный файл для запуска может выглядеть следующим образом (не проверено):
Обратите внимание, что запускаемые таким образом командные файлы запускаются от имени системного пользователя, что означает, что у вас нет автоматического доступа к общим сетевым ресурсам. Но вы можете использовать net use для подключения к удаленному серверу.
Вы должны загрузить Windows 2003 Resource Kit, чтобы получить его. Resource Kit также можно установить в других версиях Windows, например в Windows XP.
источник
Запустите его под другим именем пользователя, используя «runas» или запланировав его под другим пользователем в запланированных задачах Windows.
источник
Вы можете запустить свой .bat-файл через .vbs-файл.
Скопируйте следующий код в свой .vbs-файл:
источник
Вы также можете использовать
PS: К сожалению, статус свернутого окна зависит от команды, которую нужно запустить. VG не работают
источник