Запуск CMD или BAT в бесшумном режиме - PullRequest
40 голосов
/ 04 января 2009

Как запустить файл CMD или .bat в режиме без вывода сообщений? Я пытаюсь предотвратить отображение интерфейса CMD пользователю.

Ответы [ 9 ]

39 голосов
/ 04 января 2009

Включите фразу

@echo off

прямо вверху скрипта с битой.

36 голосов
/ 04 января 2009

Я предложил в вопросе StackOverflow способ запустить пакетный файл в фоновом режиме ( окна DOS не отображаются )

Это должно ответить на ваш вопрос.

Вот оно:


Из вашего первого сценария вызовите второй сценарий со следующей строкой:

wscript.exe invis.vbs run.bat %*

На самом деле вы вызываете скрипт vbs с:

  • [путь] \ имя вашего скрипта
  • все остальные аргументы, необходимые вашему скрипту (%*)

Затем invis.vbs вызовет ваш сценарий с помощью метода Windows Script Host Run () , который принимает:

  • intWindowStyle: 0 означает «невидимые окна»
  • bWaitOnReturn: false означает, что вашему первому сценарию не нужно ждать завершения второго сценария

См. Вопрос для полного сценария invis.vbs:

Set WshShell = WScript.CreateObject("WScript.Shell")
WshShell.Run """" & WScript.Arguments(0) & """" & sargs, 0, False
                                                         ^
                             means "invisible window" ---| 

Обновление после отзыва Таммена:

Если вы находитесь в сеансе DOS и хотите запустить другой скрипт «в фоновом режиме», простого /b (как описано в том же вышеупомянутом вопросе ) может быть достаточно:

Вы можете использовать start /b second.bat для асинхронного запуска второго пакетного файла из вашего первого, который разделяет окно вашего первого.

8 голосов
/ 15 ноября 2012

Используйте Advanced BAT to EXE Converter от http://www.battoexeconverter.com

Это позволит вам встраивать любые дополнительные двоичные файлы вместе с вашим пакетным файлом в один полностью автономный EXE-файл и его бесплатное программное обеспечение

6 голосов
/ 15 апреля 2015

Используйте Bat To Exe Converter, чтобы сделать это

http://download.cnet.com/Bat-To-Exe-Converter/3000-2069_4-10555897.html
(Выберите Прямая ссылка для скачивания )

1 - Откройте Bat to Exe Converter, выберите файл Bat.
2 - В меню «Опции» выберите «Невидимое приложение», затем нажмите кнопку компиляции.

Готово!

6 голосов
/ 15 января 2014

Я думаю, что это самое простое и самое короткое решение для запуска пакетного файла без открытия окна DOS, оно может сильно отвлекать, если вы хотите запланировать набор команд для периодического запуска, поэтому окно DOS продолжает появляться это ваше решение. Используйте скрипт VBS для вызова командного файла ...

Set WshShell = CreateObject("WScript.Shell" ) 
WshShell.Run chr(34) & "C:\Batch Files\ mycommands.bat" & Chr(34), 0 
Set WshShell = Nothing 

Скопируйте приведенные выше строки в редактор и сохраните файл с расширением .VBS. Отредактируйте соответственно имя файла .BAT и путь.

5 голосов
/ 06 февраля 2011

Попробуйте SilentCMD . Это небольшая бесплатная программа, которая запускает пакетный файл без отображения окна командной строки.

3 голосов
/ 27 ноября 2012

Если я хочу запустить командную строку в режиме без вывода сообщений, то существует простая команда vbs:

Set ws=CreateObject("WScript.Shell")
ws.Run "TASKKILL.exe /F /IM iexplore.exe"

если я хотел открыть URL-адрес в cmd без вывода сообщений , то вот код:

Set WshShell = WScript.CreateObject("WScript.Shell") 
Return = WshShell.Run("iexplore.exe http://otaxi.ge/log/index.php", 0)
'wait 10 seconds
WScript.sleep 10000 
Set ws=CreateObject("WScript.Shell")
ws.Run "TASKKILL.exe /F /IM iexplore.exe"
2 голосов
/ 25 декабря 2013

Я уверен, что этот метод мне нравится больше всего. Скопируйте и вставьте приведенный ниже код в файл .vbs. Оттуда вы вызовете пакетный файл ... поэтому убедитесь, что вы изменили последнюю строку, чтобы указать путь и имя пакетного файла (который должен содержать файл, который вы хотите запустить или выполнить необходимые действия)

Const HIDDEN_WINDOW = 12 

strComputer = "." 
Set objWMIService = GetObject("winmgmts:" _ 
& "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2") 
Set objStartup = objWMIService.Get("Win32_ProcessStartup") 

Set objConfig = objStartup.SpawnInstance_ 
objConfig.ShowWindow = HIDDEN_WINDOW 
Set objProcess = GetObject("winmgmts:root\cimv2:Win32_Process") 
errReturn = objProcess.Create("C:\PathOfFile\name.bat", null, objConfig, intProcessID)

Это определенно сработало для меня. Комментарии приветствуются:)

0 голосов
/ 21 июня 2018

Я создан RunApp , чтобы выполнить такую ​​работу, а также использовать ее в моей рабочей среде, надеюсь, это поможет.

Конфигурация, как показано ниже:

файл: config.arg

:style:hidden

MyBatchFile.bat
arg1
arg2

И вместо этого запустить runapp.exe.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...