При запуске скрипта или какой-либо консольной утилиты у нас возникает окно терминала. Иногда это может привести к выходу на рабочий стол из полноэкранного приложения.
Да и вообще, вы можете поставить в Планировщик заданий скрипт, который должен выполняться в фоне, но будете периодически видеть это окно на доли секунды.

Это неудобно.

Решение этой проблемы очень простое – это VBS-скрипт для запуска чего либо.

Dim WShell, Script
Set WShell = CreateObject("WScript.Shell")
Set Script = "e:\folder\some.bat"

if WScript.Arguments.count > 0 then
    Set oAL = CreateObject("System.Collections.ArrayList")
    For Each oItem In Wscript.Arguments: oAL.Add oItem: Next
    Args = Join(oAL.ToArray, " ")
 end if

WShell.Run Script & " " & Args, 0

Set WShell = Nothing

Именно параметр 0 в строке WShell.Run скрывает наше окно со скриптом.
При отладке вы можете его просто убрать или сменить на нужный режим по ссылке.

WScript.Echo Args вероятно также будет полезно при отладке.

Сохраняем код как .vbs файл и задаём свой путь в Set Script, а запуск обычный:

somename.vbs
# или
c:\Windows\System32\cscript.exe somename.vbs

Так же наш vbs скрипт принимает аргументы, которые потом будут переданы вызываемому bat-файлу/скрипту/утилите:

somename.vbs param1 param2



В принципе можно пойти дальше и сделать универсальный runner:

Dim WShell
Set WShell = CreateObject("WScript.Shell")

if WScript.Arguments.count > 0 then
    Set oAL = CreateObject("System.Collections.ArrayList")
    For Each oItem In Wscript.Arguments: oAL.Add oItem: Next
    Args = Join(oAL.ToArray, " ")
 end if

WShell.Run Args, 0

Set WShell = Nothing

Соответственно всё, что вы будете передавать как аргументы при вызове vbs скрипта будет пытаться выполниться.

runner.vbs c:\Users\Mirage\Desktop\some.bat

runner.vbs c:\ruby\vers\ruby-2.5.3-1-x64\bin\ruby.exe c:\Users\Passionen\Documents\projects\MockbaMusic.rb param1 param2

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

runner.vbs c:\ruby\vers\ruby-2.5.3-1-x64\bin\ruby.exe 'e:\some folder\dali.rb' param1 'param 2'



Конечно можно найти и готовые утилиты для скрытого запуска, например: NirCmd, cmdow, ..
Решение VBS-скриптом одно из, но оно просто и прозрачное.