2009-01-04 3 views

ответ

33

я предложил в StackOverflow вопрос путь к run a batch file in the background (no DOS windows displayed)

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

Здесь:


С первого сценария, вызовите второй сценарий с помощью следующей строки:

wscript.exe invis.vbs run.bat %* 

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

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

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

  • intWindowStyle: 0 означает "невидимые окна"
  • bWaitOnReturn ложь означает, что ваш первый скрипт не должен ждать окончания второго скрипта.

Посмотрите на весь скрипт invis.vbs:

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

Update после обратной Tammen по:

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

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

+0

это можно сделать, используя только команды DOS? – rplusg

+0

@calvin: вторая часть этого ответа показывает только команду DOS. В зависимости от вашего контекста вы можете запускать сценарий в бесшумном режиме с помощью команды DOS (как подробно описано в ответах в http://stackoverflow.com/questions/298562) – VonC

+0

@Shf Спасибо за редактирование. – VonC

34

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

@echo off

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

+0

Спасибо за редактирование moocha. –

+6

Немного улучшил его (форматирование, добавило @ впереди, чтобы сам вывод эха не вызывал выход). Однако это не будет препятствовать выходу из вызываемых команд. Перенаправление вывода на> NUL 2> NUL при вызове сделает это. –

+0

Хех, добро пожаловать. Переписанные комментарии :) –

4

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

7

Использование Advanced НДТ EXE конвертер из http://www.battoexeconverter.com

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

3

Если я хочу, чтобы выполнить команду ПРОМТ в автоматическом режиме, то есть простая команда 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

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

Это действительно хорошо! – jony

4

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

+1

perfect..Работает как очарование – TechDog

4

Использование Bat To Exe конвертер сделать это

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

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

Done!

Смежные вопросы