123

В Windows XP можно ли запустить пакетный файл (.bat или .cmd) через ярлык без "черного окна"?

9 ответов9

83

Сохраните следующее как wscript, например, hidecmd.vbs после замены «testing.bat» именем вашего пакетного файла.

Set oShell = CreateObject ("Wscript.Shell") 
Dim strArgs
strArgs = "cmd /c testing.bat"
oShell.Run strArgs, 0, false

Второй параметр oShell.Run - значение intWindowStyle указывающее внешний вид окна программы, а нулевое значение - для скрытого окна.

Ссылка здесь http://msdn.microsoft.com/en-us/library/d5fk67ky.aspx

43

Это просто упрощение ответа Шаджи. Вы можете запустить свой пакетный скрипт через скрипт VBScript (.vbs) следующим образом:

'HideBat.vbs
CreateObject("Wscript.Shell").Run "your_batch_file.bat", 0, True

Это выполнит ваш командный файл без показанного командного окна.

19

Просто чтобы расширить ответы "Использовать сценарии Windows" (что я считаю лучшим, потому что он уже встроен), вот как это сделать, используя один скрипт-обертку и передавая имя "реального" пакетного файла в качестве параметра. Дополнительные параметры будут переданы в командный файл.

If WScript.Arguments.Count >= 1 Then
    ReDim arr(WScript.Arguments.Count-1)
    For i = 0 To WScript.Arguments.Count-1
        Arg = WScript.Arguments(i)
        If InStr(Arg, " ") > 0 Then Arg = """" & Arg & """"
      arr(i) = Arg
    Next

    RunCmd = Join(arr)
    CreateObject("Wscript.Shell").Run RunCmd, 0, True
End If

Так, например, сохраните указанный выше файл как NoShell.vbs где-нибудь, затем вызовите:

NoShell.vbs c:\foo\my_batch_file.bat

Наконец, если вы хотите запустить это откуда-то, которое не понимает файл .vbs (например, "Внешние инструменты" в Visual Studio), вам нужно вызвать C:\Windows\System32\wscript.exe с файлом VBS в качестве первого параметра и с командным файлом в качестве второго.

9

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

Чтобы запустить его полностью незаметно, вам понадобится что-то еще, например Windows Scripting.

8

Используйте начало с опции '/B'. Например:

@echo off
start /B go.bat
6

Бесплатный GPL с открытым исходным кодом "Создать скрытый процесс"

http://www.commandline.co.uk/chp/

Microsoft Security Essentials и, возможно, большинство других сканеров вирусов и вредоносных программ будут относиться к исполняемому файлу chp.exe как к вирусу, поскольку он скрывает любую указанную вами программу от отображения окна или кнопки панели задач, как это делают вирусы.

Это не вирус. Например, не скрывает целевой процесс от появления в диспетчере задач. И, конечно, исходный код включен, так что вы можете видеть, что он очень маленький и ничего не делает, кроме запуска любой программы, которую вы ему даете.

Вы даже не должны верить, что включенный chp.exe действительно был собран из этого источника. Вы можете отказаться от прилагаемого chp.exe и скомпилировать свой собственный из исходного кода, и все необходимые инструменты для этого даже бесплатны и загружаемы.


Вы также можете просто создать ярлык для файла .bat или .cmd, затем щелкнуть правой кнопкой мыши ярлык, Свойства, вкладку Ярлык, Выполнить: свернуто. Затем в запланированных задачах используйте ярлык вместо файла .bat/.cmd напрямую. Это предотвратит появление окна, но кнопка панели задач все равно появится.

5

Вы можете использовать сценарии окна, такие как AutoIt.

Например, просто напишите это в редактор скриптов AutoIt. Это довольно просто

Run("C:\test\batchfile.bat", "", @SW_HIDE)

Если вы хотите запустить его в цикле,

$x=0
Do
 Run("C:\test\batchfile.bat", "", @SW_HIDE)
 Sleep(5000)
Until $x = 1

Скомпилируйте его как .exe - и все готово.


Аналогично, в AutoHotkey:

#NoTrayIcon ; To prevent momentary icon pop-up
run whatever.bat arg1 arg2,,hide 
5

Используйте скрытый старт (стоит $ 20)

Скрытый запуск - запуск приложений и пакетных файлов без консольного окна или запроса UAC

Консольные приложения и командные файлы регулярно запускаются при запуске Windows или по расписанию. Основным неудобством этого является то, что каждое приложение открывает консольное окно, которое мерцает на экране. Скрытый запуск (или Hstart) - это облегченная утилита командной строки, которая позволяет запускать консольные приложения и пакетные файлы без какого-либо окна в фоновом режиме, обрабатывать повышение привилегий UAC в Windows 7 и Vista, запускать несколько команд параллельно или синхронно и многое другое. ,

4

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

  1. Создайте пакетный файл, который вы хотите выполнить, и протестируйте его.
  2. Creata ярлык для этого!
  3. Отредактируйте свойства ярлыка: на вкладке «Ярлык» выберите «Запустить свернутый». Задание горячей клавиши для этого и все готово!

Удачи!

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .