Вопрос

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

Это было полезно?

Решение

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

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

Вот оно:


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

wscript.exe invis.vbs run.bat %*

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

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

Затем invis.vbs вызовет ваш скрипт с Метод запуска узла скрипта Windows(), который требует:

  • Внутренний стиль :0 означает "невидимые окна".
  • Ждите возвращения :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 чтобы запустить второй пакетный файл асинхронно из вашего первого, который совместно использует окно вашего первого.

Другие советы

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

@echo off

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

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

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

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

Для этого используйте конвертер Bat в Exe

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

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

Сделано!

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

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

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

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

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

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

файл: config.arg

:style:hidden

MyBatchFile.bat
arg1
arg2

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top