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

Дело в том, что я не хочу видеть это окно cmd в течение X секунд, пока оно не запустит эту программу. Есть идеи?

Вот код, который я использую в файле .bat:

@ECHO OFF
TIMEOUT /t 3 > nul
START "" "C:\program.exe"

1 ответ1

0

Этот визуальный базовый скрипт выполняет 3 действия.

~ Получает текущий каталог где .VBS хранится и принимает имя файла.
~ Запускает указанный файл с правами администратора. (не запрашивает UAC)
~ Запускает файл тихо, без CMD, который вы упомянули.

bElevate = False
if WScript.Arguments.Count > 0 Then If WScript.Arguments(WScript.Arguments.Count-1) <> "|" then bElevate = True
if bElevate Or WScript.Arguments.Count = 0 Then ElevateUAC
REM run the following script with admin privilages. start point.

Set fso = CreateObject("Scripting.FileSystemObject")
GetTheParent = fso.GetParentFolderName(Wscript.ScriptFullName)

Set WshShell = WScript.CreateObject ("WScript.Shell")
WshShell.Run GetTheParent & ("\CUSTOMNAMEOFBAT.bat") 
WScript.Sleep 500

REM the above script will be run with admin privilages. end point.
Sub ElevateUAC
    sParms = " |"
    If WScript.Arguments.Count > 0 Then
            For i = WScript.Arguments.Count-1 To 0 Step -1
            sParms = " " & WScript.Arguments(i) & sParms
        Next
    End If
    Set oShell = CreateObject("Shell.Application")
    oShell.ShellExecute "wscript.exe", WScript.ScriptFullName & sParms, , "runas", 1
    WScript.Quit
End Sub

Скопируйте / Вставьте следующий код и сохраните как .VBS . Положите. Сценарий vbs в том же каталоге, что и ваш .bat и замените "CUSTOMNAMEOFBAT" (в конце строки 11) на имя вашего .bat .

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