it-swarm.com.ru

Запуск CMD или BAT в бесшумном режиме

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

39
Tammen Bruccoleri

Я предложил в вопросе 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 для асинхронного запуска второго пакетного файла из вашего первого, который разделяет окно вашего первого.

36
VonC

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

@echo off

прямо в верхней части вашего сценария летучей мыши.

38
Frederick The Fool

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

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

8
xfgjhxdfg

Используйте 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
rafael

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

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

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

6
indago

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

5
Stephan Brenner

Если я хочу запустить командную строку в режиме без вывода сообщений, то есть простая команда 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"
3
saele

Я уверен, что мне больше всего нравится этот метод. Скопируйте и вставьте приведенный ниже код в файл .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)

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

2
nino

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

Конфиг, как показано ниже:

file: config.arg

:style:hidden

MyBatchFile.bat
arg1
arg2

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

0
James Yang